@string{ASPLOS={Proceedings of the Architectural Support for Programming Languages and Operating Systems (ASPLOS)}}
@string{ECOOP={Proceedings of the European Conference on Object-oriented Programming (ECOOP)}}
@string{POPL={Proceedings of the Symposium on Principles of Programming languages (POPL)}}
@string{OOPSLA={Proceedings of the Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA)}}
@string{PLDI={Proceedings of the Conference on Programming Language Design and Implementation (PLDI)}}
@string{DAC={Proceedings of the Design Automation Conference (DAC)}}
@string{DATE={Proceedings of the Design Automation and Test in Europe (DATE)}}
@string{CODES={Proceedings of the International Symposium on Hardware/Software Codesign (CODES)}}
@string{ICASSP={Proceedings of the International Conference on Acoustics, Speech and Signal Processing (ICASSP)}}
@string{ICVS={Proceedings of the International Conference on Vision Systems (ICVS)}}
@string{ASILOMAR={Proceedings of the Asilomar Conference on Circuits, Signals and Systems}}
@string{CDC={Proceedings of the Conference on Decision and Control (CDC)}}
@string{ICCAD={Proceedings of the International Conference on Computer Aided Design (ICCAD)}}
@string{EMSOFTW={Proceedings of the International Workshop on Embedded Software (EMSOFT)}}
@string{IFIPCONGRESS={Proceedings of the IFIP Congress}}
@string{MEMOCODE={Proceedings of the Conference on Methods and Models for Codesign (MEMOCODE)}}
@string{RSP={Proceedings of the International Workshop on Rapid System Prototyping (RSP)}}
@string{SAS={Proceedings of the Static Analysis Symposium (SAS)}}
@string{HSCC={Proceedings of the International Workshop on Hybrid Systems: Computation and Control (HSCC)}}
@string{FPL={Proceedings of the International Field Programmable Logic and Applications Conference (FPL)}}
@string{FPGA={Proceedings of the International Symposium on Field Programmable Gate Arrays (FPGA)}}
@string{FPT={Proceedings of the International Conference on Field-Programmable Technology (FPT)}}
@string{FCCM={Proceedinds of the International Symposium on Field-Programmable Custom Computing Machines (FCCM)}}
@string{ASAP={Proceedings of the International Conference on Application-specific Systems, Architectures and Processors (ASAP)}} 
@string{CASES={Proceedings of International Conference on Compilers, Architecture, and Synthesis for Embedded Systems(CASES)}}

@string{IEEETASSP={IEEE Transactions on Acoustics, Speech, and Signal Processing (TASSP)}}
@string{IEEETC={IEEE Transactions on Computers}}
@string{IEEEDTC={IEEE Design and Test of Computers}}
@string{IEEETCAD={IEEE Transactions on Computer-aided Design of Integrated Circuits and Systems (TCAD)}}
@string{IEEETVLSI={IEEE Transactions on Very Large Scale Integration (VLSI)}}
@string{CACM={Communications of the ACM}}
@string{COMPUTER={IEEE Computer}}
@string{SCP={Science of Computer Programming}}
@string{ACMTODAES={ACM Transactions on Design Automation of Electronic Systems (TODAES)}}
@string{ACMTRETS={ACM Transactions on Reconfigurable Technology and Systems (TRETS)}}

@string{SPRINGER={Springer-Verlag}}
@string{KLUWER={Kluwer}}
@string{IFIP={International Federation for Information Processing}}
@string{AW={Addison-Wesley}}
@string{PH={Prentice-Hall}}
@string{NH={North-Holland}}
@string{MIT={MIT Press}}
@string{MK={Morgan Kaufmann}}
@string{LNCS={Lecture Notes in Computer Science}}
@string{OREILLY={O'Reilly}}
@string{ELSEVIER={Elsevier}}

@string{IEEE={IEEE}}
@string{ACM={ACM}}

% For EECS thesis
@string{EECS={EECS Department, University of California at Berkeley, CA}}

% For ERL memos
@string{ERL={Electronics Research Lab, Department of Electrical
                  Engineering and Computer Sciences}}
@string{MEMO={Technical Memorandum}}
@string{TR={Technical Report}}
@string{UCB={University of California Berkeley, CA 94720, USA}}

@manual{Almagest94,
  title =	 {The {A}lmagest: {P}tolemy User's Manual Version 0.5},
  year =	 {1994},
  key =		 {University of California},
  organization = ERL
}

@article{Andrews93,
  author =	 {Warren Andrews},
  title =	 {Search Continues for a Single, Best Approach to
                  {DSP} Interfacing},
  journal =	 {Computer Design},
  year =	 {1993},
  pages =	 {55--64},
  month =	 jul
}

@TechReport{Antares,
  author =	 {The ANTARES Collaboration},
  title =	 {A Deep Sea Telescope for High Energy Neutrinos},
  institution =	 {DAPNIA},
  number =	 {99-01},
  year =	 1999,
  type =	 {Technical Proposal},
  month =	 mar,
  day =		 31
}

@inproceedings{BarreraLee91,
  author =	 {Brian Barrera and Edward A. Lee},
  title =	 {Multirate Signal Processing in {C}omdisco's {SPW}},
  booktitle =	 ICASSP,
  pages =	 {1113--1116},
  year =	 1991,
  month =	 may
}

@inproceedings{ChoLiu91,
  author =	 {King-Wai Chow and Bede Liu},
  title =	 {On Mapping Signal Processing Algorithms to a
                  Heterogenous Multiprocessor System},
  booktitle =	 ICASSP,
  year =	 {1991},
  organization = IEEE,
  pages =	 {1585--1588},
  keywords =	 {parallel-dsp scheduling}
}

@phdthesis{Ha92,
  author =	 {Soonhoi Ha},
  title =	 {Compile-Time Scheduling of Dataflow Program Graphs
                  with Dynamic Constructs},
  school =	 EECS,
  month =	 apr,
  year =	 {1992}
}

@article{Marrin93,
  author =	 {Ken Marrin},
  title =	 {{DSP} Development Tools Engage Mainstream Designers},
  journal =	 {Computer Design},
  year =	 {1993},
  pages =	 {65--74},
  month =	 jan
}

@article{Messerschmitt84,
  author =	 {David G. Messerschmitt},
  title =	 {A Tool for Structured Functional Simulation},
  journal =	 {IEEE Trans. on Special Topics in Communications},
  month =	 jan,
  year =	 {1984}
}

@inproceedings{Messerschmitt84a,
  author =	 {David G. Messerschmitt},
  title =	 {Structured Interconnection of Simulation Programs},
  booktitle =	 {GlobeComm 84},
  year =	 {1984},
  pages =	 {808--811}
}

@techreport{Meyer94,
  author =	 {Matthias Meyer},
  title =	 {A Pilot Implementation of the Host-Engine Software
                  Architecture for Parallel Digital Signal Processing},
  year =	 {1994},
  month =	 nov,
  institution =	 {School of Electrical Engineering, University of
                  Technology Sydney, and Technical University
                  Hamburg-Harburg},
  note =	 {FTP from {\tt ftp.ee.uts.edu.au} as {\tt
                  /pub/DSP/papers/spook.ps.gz}}
}

@InProceedings{Nestor,
  author =	 {B. Monteleoni},
  title =	 {{NESTOR} a deep sea physics laboratory for the
                  {Mediterranean}},
  booktitle =	 {Proceeding of the International conference on
                  Neutrino Physics and Astrophysics (NEUTRINO)},
  year =	 1996,
  address =	 {Helsinki, Finland},
  month =	 jun,
  day =		 {16-19}
}

@article{OwickiGries,
  author =	 {Susan Owicki and David Gries},
  title =	 {An Axiomatic Proof Technique for Parallel Programs
                  {I}},
  journal =	 {Acta Informatica},
  year =	 "1976",
  volume =	 "6",
  pages =	 "319-340",
  publisher =	 SPRINGER
}

@inproceedings{Pino++94,
  author =	 {Jose Luis Pino and Thomas M. Parks and Edward
                  A. Lee},
  title =	 {Mapping Multiple Independent Synchronous Dataflow
                  Graphs Onto Heterogeneous Multiprocessors},
  booktitle =	 ASILOMAR,
  month =	 nov,
  year =	 {1994}
}

@inproceedings{Powell++92,
  author =	 {Douglas B. Powell and Edward A. Lee and William
                  C. Newman},
  title =	 {Direct Synthesis of Optimized {DSP} Assembly code
                  from Signal Flow Block Diagrams},
  booktitle =	 ICASSP,
  year =	 1992,
  pages =	 {V-553--V-556}
}

@inproceedings{Ptolemy91,
  author =	 {Joseph Buck and Soonhoi Ha and Edward A. Lee and
                  David G. Messerschmitt},
  title =	 {Multirate Signal Processing in {P}tolemy},
  booktitle =	 ICASSP,
  year =	 {1991},
  keywords =	 {lgdf sdf gabriel ptolemy}
}

@techreport{Reekie87,
  author =	 {Hideki John Reekie},
  title =	 {A Real-time Performance-Oriented Music Synthesiser},
  year =	 {1987},
  month =	 nov,
  institution =	 {School of Electrical Engineering, University of
                  Technology, Sydney},
  note =	 {Undergraduate thesis report}
}

@techreport{Reekie92,
  title =	 {Towards Effective Programming for Parallel Digital
                  Signal Processing},
  author =	 {H. John Reekie},
  institution =	 {Key Centre for Advanced Computing Sciences,
                  University of Technology, Sydney},
  year =	 {1992},
  type =	 {Technical Report},
  number =	 {92.1},
  month =	 may
}

@inproceedings{Reekie92a,
  author =	 {John Reekie},
  title =	 {Integrating Block-Diagram and Textual Programming
                  for Parallel {DSP}},
  booktitle =	 {Proc. 3rd Intl. Symp. on Signal Processing and its
                  Applications (ISSPA 92)},
  year =	 {1992},
  month =	 aug,
  pages =	 {622--625}
}

@unpublished{Reekie93,
  author =	 {H. John Reekie},
  title =	 {Real-time {DSP} in {C} and Assembler},
  year =	 {1993},
  note =	 {FTP from {\tt ftp.ee.uts.edu.au} as {\tt
                  /pub/prose/c30course.ps.gz}}
}

@techreport{Reekie94,
  title =	 {Modelling Asynchronous Streams in {H}askell},
  author =	 {H. John Reekie},
  institution =	 {Key Centre for Advanced Computing Sciences,
                  University of Technology, Sydney},
  year =	 {1994},
  type =	 {Technical Report},
  number =	 {94.3},
  month =	 jun,
  note =	 {FTP from {\tt ftp.ee.uts.edu.au} as {\tt
                  /pub/prose/async-streams.ps.gz}}
}

@techreport{Reekie94a,
  title =	 {Visual {H}askell: A First Attempt},
  author =	 {H. John Reekie},
  institution =	 {Key Centre for Advanced Computing Sciences,
                  University of Technology, Sydney},
  year =	 {1994},
  type =	 {Technical Report},
  number =	 {94.5},
  month =	 aug,
  note =	 {FTP from {\tt ftp.ee.uts.edu.au} as {\tt
                  /pub/prose/visual-haskell.ps.gz}}
}

@phdthesis{Reekie95,
  author =	 {H. John Reekie},
  title =	 {Realtime Signal Processing: Dataflow, Visual, and
                  Functional Programming},
  year =	 1995,
  school =	 {School of Electrical Engineering, University of
                  Technology, Sydney}
}

@unpublished{Reekie9501,
  author =	 {H. John Reekie},
  title =	 {Some thoughts on ``higher-order dataflow''},
  month =	 aug,
  year =	 {1995},
  note =	 {Unpublished memo}
}

@unpublished{Reekie9502,
  author =	 {H. John Reekie},
  title =	 {Cyclic Graphs and Dataflow Models},
  month =	 sep,
  year =	 {1995},
  note =	 {Unpublished memo}
}

@inproceedings{ReekieMeyer94,
  author =	 {H. John Reekie and Matthias Meyer},
  title =	 {The Host-Engine Software Architecture for Parallel
                  Digital Signal Processing},
  booktitle =	 {Proc. PART'94, Workshop on Parallel and Real-time
                  Systems, Melbourne, Australia},
  year =	 {1994},
  month =	 jul,
  note =	 {FTP from {\tt ftp.ee.uts.edu.au} as {\tt
                  /pub/prose/host-engine.ps.gz}}
}

@inproceedings{ReekiePotter92,
  author =	 {John Reekie and John Potter},
  title =	 {Transforming Process Networks},
  booktitle =	 {Proc. MFPW'92, the Massey Functional Programming
                  Workshop},
  year =	 {1992},
  organization = {Massey University},
  address =	 {Palmerston North, New Zealand},
  month =	 aug
}

@inproceedings{ReekiePotter93,
  author =	 {John Reekie and John Potter},
  title =	 {Process Network Transformation},
  booktitle =	 {Parallel Computing and Transputers (PCAT-93)},
  year =	 {1993},
  publisher =	 {IOS Press},
  pages =	 {376-383},
  editor =	 {David Arnold},
  month =	 nov
}

@inproceedings{ReekiePotter94,
  author =	 {H. John Reekie and John M. Potter},
  title =	 {Generating Efficient Loop Code for Programmable
                  DSPs},
  booktitle =	 ICASSP,
  year =	 1994,
  pages =	 {II-469--II-472},
  organization = IEEE
}

@article{Rodet84,
  author =	 {Xavier Rodet},
  title =	 {Time-Domain Formant-Wave-Function Synthesis},
  journal =	 {Computer Music Journal},
  year =	 1984,
  volume =	 8,
  number =	 3,
  pages =	 {9--14}
}

@INCOLLECTION{SifakisCompositionHybrid:98,
  author =	 {Sebastien Bornot and Joseph Sifakis},
  title =	 {On the composition of hybrid systems},
  booktitle =	 HSCC,
  publisher =	 SPRINGER,
  series =	 LNCS,
  number =	 1386,
  month =        apr,
  year =	 1998,
  pages =	 {49-63}
}

@book{Stanley++84,
  author =	 {W. D. Stanley and G. R. Dougherty and R. Dougherty},
  title =	 {Digital Signal Processing},
  publisher =	 {Reston Publishing},
  year =	 {1984}
}

@manual{TMS320C30,
  title =	 {TMS320C3x User's Guide},
  organization = {Texas Instruments Inc.},
  year =	 {1992},
  note =	 {Literature number SPRU031C}
}

@manual{TMS320C40,
  title =	 {TMS320C4x User's Guide},
  organization = {Texas Instruments Inc.},
  year =	 {1991},
  note =	 {Literature number SPRU063}
}

@inproceedings{Verbauwhede++94,
  author =	 {Ingrid M. Verbauwhede and Chris J. Scheers and Jan
                  M. Rabaey},
  title =	 {Specification and Support for Multi-dimensional
                  {DSP} in the {S}ilage Language},
  booktitle =	 ICASSP,
  address =	 {Adelaide, Australia},
  year =	 {1994},
  pages =	 {II-473--II-476},
  month =	 apr
}

@article{Verhulst94virtuoso,
  author =	 {Eric Verhulst},
  title =	 {Meeting the Parallel {DSP} Challenge with the
                  Real-Time {V}irtuoso Programming System},
  journal =	 {DSP Applications},
  year =	 {1994},
  pages =	 {41--56},
  month =	 jan
}

@article{Willekens94dataflow,
  author =	 {Patrick Willekens and Dirk Devisch and Marc Van
                  Canneyt and Paul Conflitti and Dominique Genin},
  title =	 {Algorithm Specification in {DSP} Station using
                  {D}ata {F}low {L}anguage},
  journal =	 {DSP Applications},
  year =	 {1994},
  pages =	 {8--16},
  month =	 jan
}

@Book{Wilson:Languages,
  author =	 {Leslie B. Wilson and Robert G. Clark},
  title =	 {Comparative Programming Languages},
  publisher =	 AW,
  year =	 1993,
  edition =	 {Second Edition}
}

@InProceedings{achermann01piccola,
  author =	 {Franz Achermann and Oscar Nierstrasz},
  title =	 {Applications = Components + Scripts : A Tour of
                  {Piccola}},
  booktitle =	 {Software Architectures and Component Technology},
  pages =	 {261--292},
  year =	 2001,
  editor =	 {Mehmet Aksit},
  publisher =	 KLUWER
}

@Book{agha86actors,
  author =	 {Gul A. Agha},
  title =	 {{ACTORS}: A Model of Concurrent Computation in
                  Distributed Systems},
  publisher =	 MIT,
  year =	 1986,
  series =	 {The MIT Press Series in Artificial Intelligence},
  address =	 {Cambridge},
  annote =	 {It is clear by the tone of this book that Agha seeks
                  to show that the actors model is a better model than
                  others that are available including synchronous
                  processes models (e.g., CSP and CCS) and functional
                  models (e.g., PN) among others. Agha speaks about
                  the advantages of expressiveness of a language but
                  he does not discuss the problems of
                  over-expressiveness. Agha places computational
                  elements of concurrent systems into three
                  categories: 1) sequential processes, 2) functions
                  transforming data values and 3) actors. Sequential
                  processes include CSP, CCS, Concurrent Pascal and
                  the Shared Variables model. Sequential processes are
                  defined by the fact that they consists of a sequence
                  of transformations on states. In addition, the
                  transformations may depend on inputs or produce
                  outputs. This dependency on inputs causes problems
                  for the denotational semantics of sequential
                  processes because of the possibility of
                  deadlock. Functions that transform data values
                  operate directly on data without the benefit of
                  state. Functional models are derived from
                  $\lambda$-calculus based languages such as Pure
                  Lisp. Concurrent systems based on functional models
                  include Kahn and MacQueen's network of parallel
                  processes and Agerwala and Arvind's dataflow
                  model. The concurrency in such systems is the
                  ability to evaluate arguments of a function in
                  parallel. Note that some would argue that functional
                  methods can indeed have state. In particular, Kahn's
                  PN, (as opposed to Kahn/MacQueen) which maps streams
                  to streams, maintains state while the stream is
                  being processed. Kahn does not make this clear but
                  this seems to be the argument that Edward
                  makes. Actors obey the following rules. Every
                  incoming communication is mapped to a 3-tuple
                  consisting: 1) a finite set of communications sent
                  to other actors. 2) a new behavior for the next
                  communication 3) a finite set of new actors
                  created. Agha makes two points. First he states that
                  actors maintain state. This is clear to me. Next he
                  states that there is no presumed sequentiality:
                  ``mathematically each of its actions is a function
                  of the actor's behavior and the incoming
                  communication.'' The second point is not clear. At
                  the very least there must be sequentiality with
                  respect to the order of incoming
                  communications. Agha emphasizes that mutability that
                  is inherent in the actors model as it facilitates
                  dynamic topologies.}
}

@article{agha90concurrent,
  author =	 {Gul Agha},
  title =	 {Concurrent Object-Oriented Programming},
  journal =	 CACM,
  volume =	 33,
  number =	 9,
  month =	 sep,
  year =	 1990,
  pages =	 {125--140}
}

@Article{agha93abstraction,
  author =	 {Agha, G. and Frolund, S. and Kim, W.Y. and Panwar,
                  R. and Patterson, A. and Sturman, D.},
  title =	 {Abstraction and modularity mechanisms for concurrent
                  computing },
  journal =	 {IEEE Parallel and Distributed Technology: Systems
                  and Applications},
  month =	 may,
  year =	 1993,
  volume =	 1,
  number =	 2,
  pages =	 {3--14},
  annote =	 {The syntactic description of actor-oriented design
                  is inspired by the work of Agha, although the
                  description of semantics is somewhat
                  different. Primarily, in Agha's model actors send
                  named messages to one another, whereas in our usage
                  actors do not know about other actors. Although this
                  might seem contradictory, the two views are
                  complementary. Agha concentrates on describing the
                  behavior or execution of a model, while we
                  concentrate on the specification of actors and
                  models. During execution of an actor-oriented model
                  the destination of every message is fixed when the
                  message is sent, even if the actor itself is not
                  aware of the destination. Another difference is that
                  Agha concentrates on }
}

@Article{agha97foundation,
  author =	 {Agha, Gul and Ian A. Mason and Scott F.Smith and
                  Carolyn L. Talcott},
  title =	 {A Foundation for Actor Computation},
  journal =	 {Journal of Functional Programming},
  volume =	 "7",
  number =	 "1",
  pages =	 "1-72",
  year =	 "1997",
}

@book{aho85compiler,
  author =	 {Alfred V. Aho and Ravi Sethi and Jeffrey D. Ullman},
  title =	 {Compilers: Principles, Techniques, and Tools},
  Publisher =	 AW,
  year =	 {1985}
}

@Article{alberto02platforms,
  author =	 {Alberto Sangiovanni-Vincentelli},
  title =	 {Defining platform-based design},
  journal =	 {EEDesign},
  year =	 2002,
  month =	 feb
}

@incollection{alfaro01interfaces,
  author =	 "Luca de Alfaro and Tom Henzinger",
  title =	 "Interface theories for component-based design",
  booktitle =	 EMSOFTW,
  series =	 LNCS,
  number =	 2211,
  publisher =	 SPRINGER,
  year =	 2001,
  pages =	 "148--165"
}

@Article{allen97wright,
  author =	 {Robert Allen and David Garlan},
  title =	 {A Formal Basis for Architectural Connection},
  journal =	 {ACM Transactions on Software Engineering and
                  Methodology},
  year =	 1997,
  month =	 jul,
  annote =	 {This paper is essentially about using a variant of
                  Tony Hoare's CSP to describe communication between
                  components. I was basically disappointed with this
                  paper because in using CSP in its foundation it
                  makes some serious assumptions. How do we use this
                  approach to describe asynchronous communication in a
                  succinct format? The paper begins with a
                  justification for the need to have an architectural
                  specification approach for describing connections
                  between components in a system. The paper began with
                  a discussion of the existence of several
                  specification languages for describing
                  implementation relationships but a lack of languages
                  for describing interaction relationships. The crux
                  of the architectural description approach (which
                  apparently is the basis for the {\em Wright system})
                  is the notion of a connector type. A connector type
                  is defined as a set of {\em roles} and a {\em glue}
                  specification. Each role describes the local
                  behavior of each interacting party that is connected
                  through the connector. The glue describes the
                  coordination of the activities of the roles. The
                  roles and glue are described using CSP semantics
                  with a few variations. The variations are largely
                  inconsequential from the perspective of
                  specification style. One key difference is the
                  notion of deterministic choice in addition to the
                  standard non-deterministic choice already found in
                  CSP. My problem is that this system relies too
                  heavily on CSP semantics. What about asychronous
                  systems? Is this really an efficient specification
                  approach?}
}

@InProceedings{alur94realtime,
  author =	 {Rajeev Alur and Thomas A. Henzinger},
  title =	 {Real-time System = Discrete System + Clock
                  Variables},
  booktitle =	 {Theories and Experiences for Real-time System
                  Development},
  year =	 1994,
  editor =	 {T. Rus and C. Rattray},
  series =	 {AMAST Series in Computing 2},
  publisher =	 {World Scientific},
  pages =	 {1-29},
  annote =	 { The paper provides a framework for formalizing real
                  time systems. The framework is referred to as the
                  ``clock approach'' in which a system's variables are
                  partitioned into discrete variables and clock
                  variables. The paper introduced many terms that were
                  new to me. At the same time, I felt there were
                  subtle ambiguities (in some cases blatant errors) in
                  the examples that were used throughout the
                  paper. The combination of learning several new terms
                  in conjunction with errors made the paper
                  unnecessarily challenging in my opinion. The paper
                  begins with a good example of the need for
                  verification in the railroad-gate controller
                  example. They then describe the synchrony assumption
                  as a timing abstraction (where the environment speed
                  is much slower than the system
                  speed). Unfortunately, in their attempt to describe
                  Zeno behavior as a result of the synchrony
                  assumption, they appear to produce a critical error
                  in the water-level controller example (i.e., the
                  drain rate should be 3 liters/sec and the fill rate
                  should be 2 liters/sec). It builds up by describing
                  four types of systems: untimed, ... Untimed systems
                  consist of variables. States are simply functions
                  that map variables to values of a given type. A
                  transition is a pair of states (source and target
                  state). A {\em stutter transition} is one in which
                  the source state is identical to the target
                  state. Stutter transitions represent internal
                  behavior of a system that is not visible
                  externally. A behavior is a countable sequence of
                  states. Several assumptions are made about a system
                  and its environment. 1) In a finite interval of time
                  there are a finite number of transitions. (Note at
                  this point time had not been defined.) 2) A system
                  can not prevent an environment activity. 3) The
                  environment never terminates A behavior is
                  considered {\em environment fair} if it contains
                  infinitely many stutter transitions. Basically this
                  means that the environment can not prevent the {\em
                  eventual} internal execution of a system. A closed
                  discrete system, $S$, is a pair consisting of a
                  state predicate (initial condition) and a transition
                  predicate. A behavior, $\sigma$ satisfies $S$ if the
                  state predicate holds for $\sigma$ and the
                  transition predicate is invariant for $\sigma$. The
                  set of behaviors of a system satisfy 1) {\em stutter
                  closure} - removing or adding a stutter transition
                  to a possible behavior results in a possible
                  behavior 2) {\em fusion closure} - concatenation of
                  possible behavior at common states results in a
                  possible behavior 3) {\em limit closure} - if all
                  finite prefixes of the environment fair behavior,
                  $\bar{\sigma}$, are valid behaviors, then
                  $\bar{\sigma}$ is also a valid behavior. The
                  ramifications of the above closure properties are
                  that possible behaviors are determined one
                  transition at a time. Thus, a valid finite prefix
                  can be followed by an infinite sequence of stutter
                  transitions; i.e., a system need not progress. }
}

@InProceedings{alur96reactive,
  author =	 {Rajeev Alur and Thomas A. Henzinger},
  title =	 {Reactive Modules},
  booktitle =	 {Proceedings of the 11th IEEE Symposium on Logic in
                  Computer Science},
  year =	 1996,
  pages =	 {207-218},
  annote =	 { This paper presents a formal modeling language for
                  reactive concurrent systems. Alur and Henzinger
                  define "Reactive Modules" which serve as a model of
                  components in a concurrent system. The framework can
                  model both synchronous and asynchronous behavior and
                  incorporates abstration and hiding operators to
                  facilitate the representation of a continuum between
                  these two notions. I am interested in this paper
                  because it applies the Assume-Guarantee and
                  Compositional assumptions. It also discusses
                  hierarchical proof techniques (stepwise
                  refinement). Consider hardware-software codesign and
                  verification of reactive systems. The design
                  requirements include: * The ability to model
                  different synchrony assumptions (systems are
                  typically heterogeneous and include synchronous and
                  asynchronous components). * The ability to model
                  systems at different levels of abstraction. * The
                  ability to decompose verification tasks into
                  subtasks of lower complexity. The salient features
                  of reactive modules are scalability along the space
                  and time axes and interdefinability of synchronous
                  and asynchronous behavior. Scalability along the
                  space axis means that spatial implementation details
                  (e.g., internal variables and wires) can be
                  hidden. Scalability along the time axis means that
                  temporal details (e.g., internal computation steps
                  and delays) can be hidden. Interdefinability means
                  that after hiding spatial or temporal details, a
                  module that was previously synchronous
                  (asynchronous) can be redefined to be asynchronous
                  (synchronous). Definition of a Reactive Module
                  Variables, States & Events A module has a _finite_
                  set of typed variables. States are particular
                  valuations of these variables. Events are modelled
                  by toggling boolean variables. System
                  vs. Environment Variables are partitioned into two
                  groups: Controlled Variables - Updated internally by
                  the system External Variables - Updated externally
                  by the environment States vs. Observations
                  Controlled variables are partitioned into two
                  groups: Private and Interface Variables Interface
                  and External variables are observable externally
                  while private variables are only observable by the
                  internal system. Asynchrony vs Synchrony Variables
                  change their values in a sequence of rounds during
                  execution: Pure Asynchrony - Private variables can
                  be updated independent of observable
                  variables. Examples include asychronous systems
                  communicating via shared variables. Observable
                  Asynchrony - Private variables are updated in
                  response to observable changes. Examples include
                  asynchronous systems communicating via events such
                  as I/O automata. Atomic Synchrony - The system and
                  environment simultaneously update
                  variables. Examples include Mealy machines and
                  Hoare's CSP. Nonatomic Synchrony - The system and
                  environment take turns updating variables during
                  microsteps. The synchronous programming languages
                  such as Estereluse this model. Modeling
                  vs. Programming Language It should be noted that
                  reactive modules serve as a modelling language; not
                  a programming language. As such it has an explicit
                  notion of variables and states and allows
                  nondeterminism. Nondeterminism is a convenient
                  mechanism for describing incomplete or high level
                  designs. The intent is that various programming
                  languages will be translated to reactive modules and
                  analysis will be performed. I am not exactly clear
                  on the difference between a modelling language and a
                  programming language. I think that a modelling
                  language is close to a model of computation in that
                  it has semantics without syntax. Implementation
                  Module P "implements" module Q if the following
                  conditions are met: 1) Every interface variable of Q
                  is an interface variable of P. 2) Every external
                  variable of Q is an observable variable of P. 3) For
                  all observable variables x in Q and interface
                  variables y in Q, if y awaits x in Q, then y awaits
                  x in P. 4) If s is a trace of P, then the projection
                  of this trace onto the observable variables in Q is
                  a trace of Q. Operations on Reactive Modules Here we
                  focus on how reactive modules can be combined and
                  operated on. Five operations were covered: 1)
                  Variable Renaming 2) Parallel Composition 3)
                  Variable Hiding 4) Round Abstraction 5) Triggering
                  Of special interest to me is parallel composition
                  and this is what I will cover below. Reactive
                  modules P and Q are considered "compatible" if 1)
                  The interface variables of P and Q are disjoint 2)
                  The await dependencies among observable variables of
                  P and Q are acyclic. Note that I did not summarize
                  the component of this paper that deals with acyclic
                  dependencies. Note that if P implements Q and P and
                  R are compatible, then Q and R are compatible as
                  well. Parallel Composition If P and Q are two
                  compatible modules, then the composition is the
                  module P||Q with * The private (interface) variables
                  of P||Q are the union of the private (interface)
                  variables of P and Q. * The external variables of
                  P||Q are the union of the external variables of P
                  and Q minus the interface variables of P||Q. This
                  accomodates the fact that an interface variable of P
                  might connect with an external variable of Q. The
                  paper then proceeds to invoke the compositional and
                  assume-guarantee assumptions. Accordingly I list
                  several propositions which have proofs that use
                  these assumptions: * P||Q implements P * P
                  implements Q implies P||R implements Q||R * P1 and
                  P2 are compatible as are Q1 and Q2. Then P1||Q2
                  implements Q1, Q1||P2 implements Q2, every external
                  variable of Q1||Q2 is an observable variable of
                  P1||P2 implies that P1||P2 implements
                  Q1||Q2. Initially I read this paper to consider
                  extensions to other general models of computation
                  with particular emphasis of applications to the
                  dataflow model. I am reading it a second time with
                  consideration for how it can impact composition of
                  operational semantics. I am trying to determine how
                  composition should come about for the Ptolemy II
                  process domains. I think that the notion of
                  ``implements'' as explained in this paper could be
                  useful for my composition needs. For example, in DDE
                  each actor has a local notion of time. The questions
                  to be answered include: How does time fit in Alur
                  and Henzinger's classification of variables. Where
                  do DDE actor's fit on the (a)synchrony scale?}
}

@Book{andrews91concurrent,
  author =	 {Gregory R. Andrews},
  title =	 {Concurrent Programming: Principles and Practice},
  publisher =	 {Benjamin/Cummings},
  year =	 1991,
  address =	 {Redwood City, California},
  annote =	 {This is a comprehensive textbook on concurrent
                  programming. The book starts off with a review of
                  formal logic and its use in sequential
                  programming. The logical constructs introduced here
                  are repeatedly referred to throughout the
                  book. Chapter 2 introduces concurrency and
                  synchronization. The idea is simply that processes
                  alternately process information and communicate the
                  information to other processes. Internal processing
                  happens concurrently with that of neighboring
                  processses. Communication between processes makes it
                  necessary to synchronize so that interference can be
                  avoided. Interference occurs when a process makes an
                  action that invalidates assumptions made by another
                  process. To avoid interference, processes
                  synchronize. We can view the execution of a
                  concurrent program as an interleaving of the atomic
                  actions executed by the individual processes. The
                  set of possible interleavings consists of many
                  realizations. In general, some interleavings are
                  undesirable and result in interference. The are two
                  ways to avoid undesirable interleaving. One
                  possibility is to combine several atomic actions in
                  to coarse grain actions. The second option is to
                  delay certain atomic actions of a given process
                  until the program state is safe. The first option is
                  referred to as {\em mutual exclusion}. The second
                  option is referred to as {\em condition
                  synchronization}. Mutual exclusion and condition
                  synchronization serve as core solutions throughout
                  the text. The book builds a solid foundation based
                  on the notion of mutual exclusion and }
}

@Book{armstrong00VHDL,
  author =	 {James R. Armstrong and F. Gail Gray},
  title =	 {VHDL Design Representation and Synthesis},
  publisher =	 PH,
  year =	 2000
}

@InProceedings{armstrong02embedded,
  author =	 {Brijesh Sirpatil and James Baker and James
                  Armstrong},
  title =	 {Using {SystemC} to Implement Embedded Software},
  booktitle =	 {Proceedings of International Conference on Hardware
                  Description Languages},
  year =	 2002
}

@Article{astrom00swingup,
  author =	 "{\AA}str{\"o}m, Karl Johan and Furuta, Katsuhisa",
  year =	 2000,
  volume =	 36,
  title =	 "Swinging up a Pendulum by Energy Control",
  pages =	 "278--285",
  journal =	 "Automatica"
}

@inproceedings{balarin02metropolis,
  author =	 {F. Balarin and L. Lavagno and C. Passerone and
                  Y. Watanabe},
  title =	 {Processes, Interfaces, and Platforms: Embedded
                  Software Modeling in {Metropolis}},
  booktitle =	 EMSOFTW,
  series =	 LNCS,
  number =	 2491,
  publisher =	 SPRINGER,
  year =	 2002,
  pages =	 "407--421"
}

@Article{basten97vectorTime,
  author =	 {Twan Basten and Thomas Kunz and James P. Black and
                  Michael H. Coffin and David J. Taylor},
  title =	 {Vector Time and Causality Among Abstract Events in
                  Distributed Computations},
  journal =	 {Distributed Computing},
  year =	 1997,
  volume =	 11,
  number =	 1,
  pages =	 {21-39}
}

@article{benveniste98hybrid,
  author =	 {Albert Benveniste},
  title =	 {Compositional and Uniform Modeling of Hybrid
                  Systems},
  journal =	 {IEEE Transactions on Automatic Control},
  year =	 1998,
  volume =	 43,
  number =	 4,
  pages =	 "579-584"
}

@InProceedings{bhattacharya00psdfScheduling,
  author =	 {Bishnupriya Bhattacharya and Shuvra
                  S. Bhattacharyya},
  title =	 {Quasi-static Scheduling of Reconfigurable Dataflow
                  Graphs for {DSP} Systems},
  booktitle =	 RSP,
  year =	 2000,
  month =	 jun,
  publisher =	 IEEE
}

@Article{bhattacharya01psdf,
  author =	 {Bishnupriya Bhattacharya and Shuvra
                  S. Bhattacharyya},
  title =	 {Parameterized dataflow modeling for {DSP} systems},
  journal =	 {IEEE Transactions on Signal Processing},
  year =	 2001,
  volume =	 49,
  number =	 10,
  pages =	 {2408--2421},
  month =	 oct
}

@InProceedings{bhattacharya02localSynchrony,
  author =	 {Bishnupriya Bhattacharya and Shuvra
                  S. Bhattacharyya},
  title =	 {Consistency Analysis of Reconfigurable Dataflow
                  Specifications},
  booktitle =	 {Embedded Processor Design Challenges},
  pages =	 {1--17},
  year =	 2002,
  number =	 2268,
  series =	 LNCS,
  month =	 oct,
  publisher =	 SPRINGER
}

@article{bhattacharyya93sdf,
  author =	 {Shuvra S. Bhattacharyya and Edward A. Lee},
  title =	 {Scheduling Synchronous Dataflow Graphs for Efficient
                  Looping},
  journal =	 {Journal of VLSI Signal Processing},
  volume =	 6,
  year =	 1993,
  page =	 {271--288}
}

@article{bhattacharyya94memory,
  author =	 {Shuvra S. Bhattacharyya and Edward A. Lee},
  title =	 {Memory Management for Dataflow Programming of
                  Multirate Signal Processing Algorithms},
  journal =	 {IEEE Transactions on Signal Processing},
  year =	 1994
}

@Book{bhattacharyya96sdf,
  author =	 {Shuvra S. Bhattacharyya and Pravin K. Murthy and
                  Edward A. Lee},
  title =	 {Software Synthesis from Dataflow Graphs},
  publisher =	 KLUWER,
  year =	 1996
}

@Inproceedings{biberstein02sealing,
  author =	 {Marina Biberstein and Vugranam Sreedhar and Ayal
                  Zaks},
  title =	 {A Case for Sealing Classes in {Java}},
  booktitle =	 {Proc. The Israeli Workshop on Programming Languages
                  and Development Environments},
  month =	 jul,
  year =	 2002
}

@article{bier90gabriel,
  author =	 {J. C. Bier and E. E. Goei and W. H. Ho and
                  P. D. Lapsley and M. P. O'Reilly and G. C. Sih and
                  E. A. Lee},
  title =	 {Gabriel: A Design Environment for {DSP}},
  journal =	 {IEEE Micro},
  year =	 {1990},
  pages =	 {28--45},
  month =	 oct,
  keywords =	 {gabriel sdf}
}

@Book{breal91semantics,
  author =	 {Michel Breal},
  title =	 {The Beginnings of Semantics: Essays, Lectures and
                  Reviews},
  publisher =	 {Stanford University Press},
  year =	 1991,
  address =	 {Stanford, California}
}

@article{breslau00networkSimulation,
  author =	 "Lee Breslau and others",
  title =	 "Advances in Network Simulation",
  journal =	 COMPUTER,
  year =	 "2000",
  volume =	 "33",
  number =	 "5",
  month =	 may,
  pages =	 "59--67",
  url =		 "http://www.isi.edu/~johnh/PAPERS/Breslau00a.html",
  pdfurl =	 "http://www.isi.edu/~johnh/PAPERS/Breslau00a.pdf",
  copyrightholder =IEEE,
  organization = "USC/Information Sciences Institute",
}

@InProceedings{brookes95intensional,
  author =	 {Stephen D. Brookes and Denis Dancanet},
  title =	 {Sequential Algorithms, Deterministic Parallelism,
                  and Intensional Expressiveness},
  booktitle =	 POPL,
  year =	 1995,
  organization = {ACM SIGPLAN-SIGACT},
  month =	 jan,
  pages =	 {13-24}
}

@InProceedings{brookes99cpp,
  author =	 {Stephen D. Brookes},
  title =	 {Communicating Parallel Processes},
  booktitle =	 {Symposium in Celebration of the Work of
                  C.A.R. Hoare},
  year =	 1999,
  annote =	 { This article was written in honor of Tony Hoare. It
                  gives a good overview of CSP and then reconsiders
                  some of the features of CSP. The paper starts out by
                  providing context by speaking of three major
                  modelling languages: 1) Asynchronous process (Kahn
                  style processes) 2) Synchronous processes (CSP and
                  CCS) 3) Share memory programs (Dijkstra's
                  Cooperating Sequential Processes) Actually note that
                  Brookes spoke of asynchronous processes,
                  shared-variable programs and Kahn-style dataflow
                  networks. Either Brookes has a different definition
                  of ``asynchronous'' or I am not clear on the
                  distinction between asynchronous processes and
                  Kahn-style dataflow networks. Brookes cites some of
                  the shortfalls of CSP as including the lack of an
                  associative binary parallel composition
                  operator. This is due to the sequential restriction
                  on processes being composed. Some of the setbacks
                  that result include the fact that the number of
                  processes in a program is statically determined by
                  the program's syntactic structure. I think this is a
                  very valuable point and it means that there is
                  difficulty in using dynamic or mutable networks;
                  most notably libraries of programs are
                  constrained. A way to get around this problem is to
                  bring together the notion of port names and process
                  variables. Another problem that Brookes cites is
                  that the choice of a modelling language that is
                  fundamentally synchronous vs. asynchronous. From an
                  implementation standpoint, Brookes argues that CSP
                  could just as easily been designed to have
                  asynchronous communication. Nevertheless, he claims
                  that the choice impacts the level of fairness in the
                  system. Brookes provides the following convenient
                  definitions: 1) Weak Fairness - {\em Continuously}
                  enabled processes get scheduled. 2) Strong Fairness
                  - {\em Continually} enabled processes get
                  scheduled. Hoare's original paper on CSP made no
                  distinction between strong and weak fairness but it
                  is assumed that fairness to Hoare meant strong
                  fairness. Hoare stated that a programming language
                  definition should not specify that a program must be
                  (strongly) fair. Brookes agrees with this. The
                  reason the above paragraph is relevant is because
                  there are examples in which asynchronous
                  communication can guarantee strong fairness while an
                  analogous synchronous program would only guarantee
                  weak fairness. This is due to the fact that an
                  asynchronous communication is ``stored'' in a buffer
                  by the writer; a synchronous communication is only
                  enabled when both the writer and reader are
                  ready. The remainder of the paper dealt with a
                  revised version of CSP that includes asynchronous
                  communication among other new
                  constructs. Unfortunately the paper did not consider
                  an associative binary parallel operator which was my
                  primary interest. There are several references that
                  might shed light on this particular topic.}
}

@Article{brown88calendar,
  author =	 {Randy Brown},
  title =	 {Calendar Queues: A Fast O(1) Priority Queue
                  Implementation for the Simulation Event Set Problem},
  journal =	 CACM,
  year =	 1988,
  volume =	 31,
  number =	 10,
  month =	 oct,
  pages =	 {1220 - 1227}
}

@article{buck92ptolemy,
  author =	 {Joseph Buck and Soonhoi Ha and Edward A. Lee and
                  David G. Messerschmitt},
  title =	 {Ptolemy: A Framework for Simulating and Prototyping
                  Heterogenous Systems},
  year =	 {1992},
  journal =	 {International Journal of Computer Simulation},
  note =	 {Special issue on ``Simulation Software
                  Development''}
}

@inproceedings{buck92tokenFlow,
  author =	 {Joseph Buck and Edward A. Lee},
  title =	 {The Token Flow Model},
  booktitle =	 {Data Flow Workshop, Hamilton Island, Australia},
  year =	 {1992},
  month =	 may,
  note =	 {Anonymous ftp from ptolemy.eecs.berkeley.edu}
}

@phdthesis{buck93ddf,
  author =	 {Joseph T. Buck},
  title =	 "Scheduling Dynamic Dataflow Graphs with Bounded
                  Memory Using the Token Flow Model",
  year =	 {1993},
  school =	 EECS
}

@InProceedings{buck94idf,
  author = 	 {Joseph T. Buck},
  title = 	 {Static Scheduling and Code Generation from Dynamic Dataflow Graphs with Integer-Valued Control Systems},
  booktitle =	 ASILOMAR,
  year =	 1994,
  month =	 oct,
  organization = IEEE
}

@inproceedings{burch01traces,
  author =	 {J. R. Burch and R. Passerone and
                  A. L. Sangiovanni-Vincentelli},
  title =	 {Using Multiple Levels of Abstractions in Embedded
                  Software Design},
  booktitle =	 EMSOFTW,
  series =	 LNCS,
  number =	 2211,
  publisher =	 SPRINGER,
  year =	 2001,
  pages =	 "166-184"
}

@MISC{cadence02vcc,
  author =	 {{Cadence Design Systems}},
  title =	 {{Cadence} Virtual Component Co-Design Environment
                  Whitepaper},
  howpublished = {http://www.cadence.com},
  year =	 {2002},
}

@TechReport{eker03cal,
  author =	 {Eker, Johan and J{\"o}rn Janneck},
  title =	 {{CAL} Language Report: Specification of the {CAL} actor language},
  institution =	 ERL,
  year =	 2003,
  type =	 MEMO,
  number =	 {UCB/ERL 03/48},
  address =	 UCB,
  month =	 dec
}

@article{cardelli87polymorphic,
  author =	 {Luca Cardelli},
  title =	 {Basic Polymorphic Typechecking},
  journal =	 SCP,
  volume =	 8,
  number =	 2,
  pages =	 "147--172",
  year =	 1987,
  annote =	 "A good operational summary of the Hindley/Milner
                  type inference algorithm for ML"
}

@Article{cardelli88inheritance,
  author =	 {Luca Cardelli},
  title =	 {A Semantics of Multiple Inheritance},
  journal =	 {Information and Computation},
  year =	 1988,
  volume =	 76
}

@Article{cardelli91records,
  author =	 {Luca Cardelli and John C. Mitchell},
  title =	 {Operations on Records},
  journal =	 {Mathematical Structures in Computer Science},
  year =	 1988,
  volume =	 1,
  pages =	 "3--48"
}

@article{castagna95covariance,
  author =	 "Giuseppe Castagna",
  title =	 "Covariance and Contravariance: Conflict without a
                  Cause",
  journal =	 toplas,
  volume =	 "17",
  number =	 "3",
  month =	 may,
  pages =	 "431--447",
  year =	 "1995"
}

@Article{chandy81asynchronous,
  author =	 {K.M. Chandy and J. Misra},
  title =	 {Asynchronous Distributed Simulation via a Sequence
                  of Parallel Computations},
  journal =	 CACM,
  year =	 1981,
  volume =	 24,
  number =	 11,
  month =	 apr,
  pages =	 {198-206},
  annote =	 {These authors present a method for distributed
                  simulation that is very close to mine. They require
                  monotonicity on sequences of messages between
                  processes. In addition, they have the following {\em
                  Waiting Rules}: (1) A process waits to receive
                  messages on all input lines whose clock values equal
                  the process clock value. (2) A process waits on all
                  output lines which have a pending message. The
                  second waiting rules appears to be a rendezvous form
                  of communication. Note that in this approach, if a
                  pending event does not exist on an output, then the
                  arc has no notion of what time it is. Chandy and
                  Misra spend a good deal of time on deadlock. In
                  particular, they discuss algorithms for detecting
                  deadlock and then clearing up the deadlock. Their
                  scheme is dependent upon the transmission of null
                  events. This is very different from my approach. I
                  modify my "waiting" semantics to prevent deadlock
                  although I may use null events as well.}
}

@Article{chase98detection,
  author =	 {Craig M. Chase and Vijay K. Garg},
  title =	 {Detection of Global Predicates: Techniques and Their
                  Limitations},
  journal =	 {Distributed Computing},
  year =	 1998,
  volume =	 11,
  pages =	 {191-201},
  annote =	 {The most basic command of a debugging system is
                  ``stop the program when the predicate \phi is
                  true.'' In the case of a distributed program, the
                  predicate \phi may be based on a global
                  state. Hence, the key problem becomes the nontrivial
                  detection of a global state. This paper provides a
                  nice overview of global predicates (a predicate
                  dependent on global state) and approaches to
                  detecting global predicates. The authors show that
                  global predicate detection is NP-complete in
                  distributed systems. They define a {\em linear}
                  class of predicates and show that a set of global
                  states satisfying a predicate is an inf-semilattice
                  if and only if the predicate is linear. This result
                  gives a necessary and sufficient condition for a set
                  of global states to form a lattice. The authors
                  define a superclass of predicates referred to as
                  {\em semilinear}. They associate predicate detection
                  algorithms with degrees of non-determinism to each
                  predicate class. Hence predicate classes can be
                  classified by the degree of non-determinism in
                  algorithms that can detect predicates in the
                  class. Predicate Classes: Each of the following
                  three classes have efficient algorithms that can
                  detect predicates within the class. Membership in a
                  predicate class is determined by the truthness of
                  the predicate in different modalities. 1) Stable
                  Predicates A predicate, \phi, is stable if \phi is
                  true in a given global state whenever {\em
                  possibly:\phi} is true in that state. Once true,
                  stable predicates remain true. 2) Observer
                  Independent Predicates A predicate, \phi, is
                  observer independent if {\em definitely:\phi} and
                  {\em possibly:\phi} are equivalent. 3) Conjunctive
                  Predicates Predicate Detection Algorithms: 1) Global
                  Snapshot Algorithms (Chandy and Lamport) This
                  approach requires repeated computation of consistent
                  global snapshots until a snapshot is found in which
                  the desired predicate is true. Hence, this approach
                  only works for stable predicates since non-stable
                  predicates may be true only between successive
                  snapshots. 2) Lattice of Global States (Cooper and
                  Marzullo) A lattice of global states is
                  constructed. The approaches incorporates the notion
                  of {\em definitely:\phi} and {\em
                  possibly:\phi}. The predicate {\em possibly:\phi} is
                  true if \phi is true for any global state in the
                  lattice. The predicate {\em definitely:phi} is true
                  if for any path from the initial global state to the
                  final global state \phi is true in at least one
                  state along the path. This approach can detect both
                  stable and unstable predicates but can be
                  prohibitively expensive. In a system with N
                  processes each with M relevant states, this approach
                  requires exploring $O(M^N)$ global states in the
                  worst case. 3) Predicate Structure The structure of
                  the predicate is used to identify a subset of global
                  states. If the predicate is true, it must be true in
                  one of the states in the subset. This approach is
                  not as general as the lattice approach but it offers
                  more efficient detection. For example, if \phi is a
                  conjunction of local predicates, then {\em
                  possibly:\phi} and {\em definitely:\phi} can be
                  detected via an algorithm of complexity $O(N^2M)$
                  for N processes each with M states. References
                  Needed: 5, 3, 4, 7, 10, 11, 1, 9, 21 }
}

@book{chassaing92dsp,
  title =	 {Digital Signal Processing with {C} and the
                  {TMS320C30}},
  publisher =	 {John Wiley and Sons},
  year =	 {1992},
  author =	 {Rulph Chassaing},
  series =	 {Topics in Digital Signal Processing},
  annote =	 {A course on the TMS320C30, using TI's low-cost
                  evaluation module (EVM). Covers basic signal
                  processing theory--filters and FFTs-- and their
                  implementation on the EVM board. Includes a disk
                  with all software on it. Looks good as an
                  introductory lab text, but it probably too expensive
                  too be used for this purpose! Sloppy treatment of
                  issues relating to programming the C30.}
}

@InProceedings{cockx01embeddedOptimization,
  author =	 {A. Johan Cockx},
  title =	 {Whole program compilation for embedded software: The
                  {ADSL} experiment},
  booktitle =	 CODES,
  year =	 2001,
  month =	 apr,
  organization = {SIGDA},
  publisher =	 ACM
}

@Unpublished{cockx02systemc30,
  author =	 {Johan Cockx},
  title =	 {Requirements for software modeling in {SystemC} 3.0},
  note =	 {Posted to the SystemC Forum},
  month =	 mar,
  year =	 2002
}

@InProceedings{cole01template,
  author =	 {M. Cole and S. Parker},
  title =	 {Dynamic Compilation of {C++} Template Code},
  booktitle =	 OOPSLA,
  year =	 2001,
  month =	 oct,
  organization = ACM
}

@techreport{colefax93,
  author =	 {Michael Colefax},
  title =	 {A Realtime Polyphonic Music Synthesiser},
  year =	 {1993},
  month =	 nov,
  institution =	 {School of Electrical Engineering, University of
                  Technology, Sydney},
  note =	 {Undergraduate thesis report}
}

@article{complementarity:98,
  author =	 {A.J. van der Schaft and J.M. Schumacher},
  title =	 {Complementarity modeling of hybrid systems},
  journal =	 {IEEE Transactions on Automatic Control},
  year =	 "1998",
  volume =	 "43",
  number =	 "4",
  pages =	 "483-490"
}

@InProceedings{consel93partialEvaluationTutorial,
  author =	 {Charles Consel and Olivier Danvy},
  title =	 {Tutorial Notes on Partial Evaluation},
  booktitle =	 POPL,
  year =	 1993,
  month =	 jan,
  organization = {SIGPLAN},
  publisher =	 ACM,
  annote =	 {An introductory tutorial to partial evaluation, both
                  for functional languages and for object-oriented
                  languages}
}

@Article{conway,
  author =	 {Melvin E. Conway},
  title =	 {Design of a Separable Transition-Diagram Compiler},
  journal =	CACM,
  year =	 {1963},
  volume =	 {6},
  number =	 {7},
  month =	 jul,
  OPTpages =	 {396-408},
  OPTannote =	 { Melvin Conway claims to have created the notion of
                  a co-routine along with Joel Erdwinn. A co-routine
                  is a module that has the essential semantics of a
                  process in a Process Network. Gilles Kahn (and David
                  MacQueen) extended Conway's notion of a co-routine
                  into their definition of process networks. The
                  syntactical analysis section of the paper was
                  difficult to understand but this is where the crux
                  of the contents that I was interested in were
                  contained. Conway's motivation for his paper was to
                  develop an efficient COBOL compiler. His compiler
                  consisted of components performing various tasks
                  (e.g., lexical analysis, parsing). For a given COBOL
                  statement there exists a transition diagram and
                  paths between the nodes must be traversed as tokens
                  (lexemes) are encountered. In general there may be
                  multiple transitions from a given node. The problem
                  is that in certain cases the order in which
                  transitions are tried can impact the input string
                  being parsed. This is undesirable. It is prefered
                  that the string interpretation is independent of the
                  order of execution of the transition diagram. The
                  above result is the key point that Conway made with
                  respect to concurrent programming. He specified two
                  conditions - No Loop Condition and No Backup
                  Condition - that were necessary to establish
                  independence of execution from string
                  interpretation. This result was translated to
                  independence of firing schedule and determinacy for
                  concurrent networks by Kahn. I'm not completely
                  clear on the No-Loop and No-Backup
                  conditions. Conways states that ``The No-Backup
                  Condition says that ... for every node in the system
                  of transition diagrams the sets of initial input
                  symbols of all the paths leading from that node are
                  disjoint.'' I believe this condition is equivalent
                  to saying that each process in PN reads from one
                  other process at a time. This is the blocking read
                  condition. Note further that the No-Backup condition
                  turns out to be stronger than the No-Loop
                  condition. It is also mentioned that the {\em
                  ambiguity problem} is avoided by the No-Backup
                  condition. Conway does not have any rigorous proofs
                  for his conditions. The remainder of (indeed the
                  bulk of) his paper is on compilers. His paper is
                  clearly a foundation but given that he had a quite
                  different goal than I do, I think some of the
                  important points are left a bit blurry.}
}

@inproceedings{covington87gospl,
  author =	 {G. D. Covington and G. E. Carter and D. W. Summers},
  title =	 {Graphic-Oriented Signal Processing Language --
                  {GOSPL}},
  booktitle =	 icassp,
  year =	 {1987}
}

@InProceedings{cremean02mvwt,
  author =	 {Lars Cremean and others},
  title =	 {The {Caltech} Multi-Vehicle Wireless Testbed},
  booktitle =	 CDC,
  volume = 1,
  pages = {86--88},
  year =	 2002,
  month =	 dec,
  publisher =	 IEEE
}

@InProceedings{dalpasso,
  author =	 {Marcello Dalpasso and Alessandro Bogliolo and Luca
                  Benini},
  title =	 {Virtual Simulation of Distriputed IP-based Designs},
  booktitle =	 DAC,
  year =	 {1999},
  publisher =	 ACM,
  month =	 jun,
  pages =	 {50-55},
  OPTannote =	 {The purpose of this article is based on a {\bf very}
                  creative idea. The authors consider how third party
                  intellectual property (IP) can be validated prior to
                  commitment to buy while protecting the intellectual
                  property of the IP vendors. Here is the basic
                  scenario: a company ({\em IP-user}) is considering
                  using a third party ({\em IP-supplier}) component
                  such as a multiplier architecture in its
                  system. Before committing to purchasing the
                  multiplier, the IP-user would like to validate the
                  multiplier with respect to the system in which it
                  will be incorporated. Validation occurs on a variety
                  of levels. For example, the IP-supplier probably
                  provides some data sheets that detail some high
                  level issues about the multiplier; e.g., estimates
                  of area, performance and power. As the IP-user
                  refines their design, the high level validation may
                  no longer suffice. More accurate information about
                  the multiplier may be needed such as functional
                  models. Eventually more accurate cost estimates may
                  require partial knowledge of the implementation and
                  environment of the component. The IP-supplier will
                  want to communicate as much information as possible
                  to facilitate a purchase but they want to protect
                  their intellectual property at the same time. I like
                  the way that JavaCAD focuses on this intellectual
                  property issue and not just distributed design. They
                  gave a brief overview of several distributed design
                  frameworks but they made it clear where they differ
                  in perspective. Note that Ptolemy II falls within
                  the distributed design camp unlike JavaCAD. Ptolemy
                  II's approach could possibly encompass the goal of
                  JavaCAD. I think this brings up an interesting
                  point. It seems that the goal of Ptolemy II is to
                  design approachs to design. JavaCAD is used for
                  designing systems that involve third party
                  IP. JavaCAD was written completely in Java. It uses
                  Java/RMI as the foundation of its distributed
                  software architecture. My guess is that the remote
                  access was at the core of the JavaCAD design. Thus,
                  some of the RemoteException concerns that led
                  Ptolemy II to use CORBA as the distributed software
                  architecture did not come into play with
                  JavaCAD. Presumably, RemoteExceptions are dealt with
                  at all levels. The JavaCAD Foundation Packages (JFP)
                  consist of several packages. At the core are Modules
                  and Connectors. Modules appearch to correspond to
                  Ptolemy II entities while connectors correspond to
                  relations. Modules can either be remote or local. A
                  module can be described at different levels of
                  abstraction - currently the gate and RTL levels are
                  supported. It appears that modules can not contain
                  modules so that hierarchy is not supported so I'm
                  not sure how the different levels of abstraction are
                  dealt with. My guess that a different syntax is used
                  for different levels of abstraction but that
                  multiple levels of abstraction can not be view for
                  the same module implementation. An event driven
                  paradigm is used. I'm not clear on how this
                  works. The events (which are called {\em Tokens}) do
                  not appear to have time stamps so I do not think
                  that this is a discrete event model of
                  computation. Instead a Scheduler invokes
                  modules. The JFP consists of an {\em estimation}
                  package for performing cost estimates of particular
                  {\em Parameters} of a given module. A given module
                  can have multiple estimators for a single
                  parameter. The estimators can be either local or
                  remote. The usefulness of the estimators is that
                  they can afford the IP-user several levels of
                  understanding depending on the model accuracy that
                  is needed. The estimators are one of the more novel
                  approaches that is incorporated into JavaCAD.}
}

@Article{daniel:embed,
  author =	 {Richard Daniel},
  title =	 {Embedding {E}thernet Connectivity},
  journal =	 {Embedded Systems Programming},
  year =	 1998,
  volume =	 11,
  number =	 4,
  month =	 apr,
  pages =	 {34 - 40}
}

@Book{davey90lattices,
  author =	 {B.A. Davey and H.A. Priestley},
  title =	 {Introduction to Lattices and Order},
  publisher =	 {Cambridge University Press},
  year =	 1990
}

@TECHREPORT(davis01ptolemy,
  author =	 {John Davis II and Christopher Hylands and Bart
                  Kienhuis and Edward A. Lee and Jie Liu and Xiaojun
                  Liu and Lukito Muliadi and Steve Neuendorffer and
                  Jeff Tsay and Brian Vogel and Yuhong Xiong},
  title =	 "{Ptolemy II} - {H}eterogeneous Concurrent Modeling
                  and Design in {Java}",
  institution =	 ERL,
  year =	 2001,
  type =	 MEMO,
  number =	 {M01/12},
  address =	 UCB,
  month =	 mar
)

@PhdThesis{davis02designFlow,
  author =	 {William Rhett Davis},
  title =	 {A hierarchical, automated design flow for low-power,
                  high-throughput digital signal processing ICs},
  school =	 EECS,
  year =	 2002
}

@TECHREPORT(davis99ptolemy,
  author =	 "J. Davis and others",
  title =	 "{Ptolemy II} - Heterogeneous Concurrent Modeling and
                  Design in {Java}",
  institution =	 ERL,
  year =	 1999,
  type =	 MEMO,
  number =	 {M99/40},
  address =	 UCB,
  month =	 jul
)

@Book{davis:semantics,
  author =	 {Ruth E. Davis},
  title =	 {Truth, Deduction, and Computation: Logic and
                  Semantics for Computer Science},
  publisher =	 {Computer Science Press},
  year =	 1989,
  annote =	 {This book provides an excellent introduction to
                  denotational, operational and axiomatic
                  semantics. The title of the book gives a hint at the
                  approach; truth is equated to denotational;
                  deduction is equated to axiomatic; computation is
                  equated to operational. Very good presentations of
                  number theory, generally recursive functions and the
                  lambda calculus are provided. Excellent intuition is
                  provided throughout. For example, the prefix
                  ordering relation is presented as ``approximates''
                  in a manner whose smoothness I have never before
                  witnessed.}
}

@techreport{dawson93visualHaskell,
  author =	 {Ken Dawson},
  title =	 {Visual {H}askell Editor and Parser},
  year =	 {1993},
  month =	 nov,
  institution =	 {School of Electrical Engineering, University of
                  Technology, Sydney},
  note =	 {Undergraduate thesis report}
}

@InBook{debakker:pomset,
  author =	 {Jaco {de Bakker} and Erik {de Vink}},
  title =	 {Control Flow Semantics},
  chapter =	 {True Concurrency},
  publisher =	 MIT,
  year =	 1996,
  series =	 {Foundations of Computing},
  address =	 {Cambridge, Massachusetts},
  pages =	 {473-490}
}

@InCollection{dennis74dataflow,
  author =	 {Jack B. Dennis},
  title =	 {First Version of a DataFlow Procedure Language},
  booktitle =	 {Programming Symposium: Proceedings, Colloque sur la
                  Programmation},
  pages =	 {362--376},
  publisher =	 SPRINGER,
  year =	 1974,
  number =	 19,
  series =	 LNCS,
  month =	 apr
}

@Proceedings{distributed_future,
  title =	 {Proceedings of the Sixth IEEE Computer Society
                  Workshop on Future Trends of Distributed Computing
                  Systems},
  year =	 1997,
  volume =	 6,
  publisher =	 IEEE,
  organization = {IEEE Computer Society},
  address =	 {Tunis, Tunisia},
  month =	 oct
}

@inproceedings{dolby97automatic,
 author = {Julian Dolby},
 title = {Automatic inline allocation of objects},
 booktitle = PLDI,
 year = {1997},
 pages = {7--17},
 publisher = ACM,
 organization = {SIGPLAN}
}

@inproceedings{dolby00automatic,
  author =	 "Julian Dolby and Andrew A. Chien",
  title =	 "An automatic object inlining optimization and its
                  evaluation",
  booktitle =	 PLDI,
  organization = "SIGPLAN",
  publisher =	 "ACM",
  pages =	 "345--357",
  year =	 2000
}

@Article{edwardlee2000computer,
  author =	 {Edward A. Lee},
  title =	 {What's ahead for embedded software?},
  journal =	 COMPUTER,
  year =	 2000,
  volume =	 33,
  number =	 7,
  pages =	 {18-26},
  month =	 sep,
}

@Article{edwardlee2002embeddedSoftware,
  author =	 {Edward A. Lee},
  title =	 {Embedded software},
  journal =	 {Advances in Computers},
  editor =	 {M. Zelkowitz},
  year =	 2002,
  volume =	 56,
}

@InCollection{edwards00sdfcircuit,
  author =	 {Martyn Edwards and Peter Green},
  title =	 {The Implementation of Synchronous Dataflow Graphs
                  Using Reconfigurable Hardware},
  booktitle =	 {Proceedings of Field Programmable Logic Symposium},
  pages =	 {739--748},
  publisher =	 SPRINGER,
  year =	 2000,
  number =	 1896,
  series =	 LNCS
}

@Article{edwards03semantics,
  author =	 {Stephen A. Edwards and Edward A. Lee},
  title =	 {The Semantics and Execution of a Synchronous
                  Block-Diagram Language},
  journal =	 SCP,
  year =	 2003,
  volume =	 48,
  number =	 1,
  pages =	 {21--42},
  month =	 jul
}

@PHDTHESIS(edwards97sr,
  author =	 "Stephen A. Edwards",
  title =	 "The Specification and Execution of Heterogeneous
                  Synchronous Reactive Systems",
  school =	 EECS,
  year =	 "1997"
)

@InProceedings{edwards99esterel,
  author =	 {Stephen Edwards},
  title =	 {Compiling {Esterel} into sequential code},
  booktitle =	 CODES,
  year =	 1999,
  month =	 may,
  organization = {SIGDA},
  publisher =	 ACM
}

@InProceedings{eker+cer99,
  author =	 "Eker, Johan and Anton Cervin",
  title =	 "A {M}atlab Toolbox for Real-Time and Control Systems
                  Co-Design",
  pages =	 "320--327",
  booktitle =	 "Proceedings of the International Conference on
                  Real-Time Computing Systems and Applications",
  year =	 1999,
  month =	 dec
}

@InProceedings{eker01heterogenous,
  author =	 {Johan Eker and Chamberlain Fong and J{\"o}rn
                  W. Janneck and Jie Liu},
  title =	 {Design and Simulation of Heterogeneous Control
                  Systems using {Ptolemy II}},
  booktitle =	 {Proceedings of the Conference on New Technologies for Computer Control},
  year =	 2001,
  month =	 nov,
  publisher =    ELSEVIER,
  series =       {IFAC Conference Proceedings},
  number =       1220
}

@Article{eker03heterogeneity,
  author =	 {Johan Eker and others},
  title =	 {Taming Heterogeneity---the {Ptolemy} Approach},
  journal =	 {Proceedings of the IEEE},
  year =	 2003,
  month =	 jan,
  volume =	 91,
  number =	 1
}

@inproceedings{engels94cycloStatic,
  author =	 {Marc Engels and Greet Bilson and Rudy Lauwereins and
                  Jean Peperstrate},
  title =	 {Cyclo-Static Dataflow: Model and Implementation},
  booktitle =	 ASILOMAR,
  month =	 nov,
  year =	 {1994}
}

@inproceedings{wauters96cycloDynamic,
  author =	 {Piet Wauters and Marc Engels and Rudy Lauwereins and
                  Jean Peperstraete},
  title =	 {Cyclo-Dynamic Dataflow},
  booktitle =	 {Workshop on Parallel and Distributed Processing (PDP)},
  month =        jan,
  year =	 1996,
  organization = {EUROMICRO},
  publisher =    IEEE
}

@InProceedings{esser01moses,
  author =	 {Robert Esser and J{\"o}rn W. Janneck},
  title =	 {Moses: A tool suite for visual modeling of
                  discrete-event systems},
  booktitle =	 {Symposia on Human-Centric Computing (HCC)},
  pages =	 {272-279},
  year =	 {2001},
  month =	 sep,
  publisher =	 IEEE
}

@InProceedings{evans01dragonfly,
  author =	 {J. Evans and G. Inalhan and J.S. Jang and R. Teo and
                  C. Tomlin},
  title =	 {Dragonfly: A Versatile {UAV} Platform for the
                  Advancement of Aircraft Navigation and Control},
  booktitle =	 {Proceedings of the Digital Avionics Systems
                  Conference},
  volume = 1,
  pages = {1C3/1--1C3/12},
  year =	 2001,
  month =	 oct,
  organization = IEEE
}

@Article{fidge91logicalTime,
  author =	 {Colin J. Fidge},
  title =	 {Logical Time in Distributed Systems},
  journal =	 COMPUTER,
  year =	 1991,
  volume =	 24,
  number =	 8,
  month =	 aug,
  pages =	 {28-33}
}

@TechReport{fong01master,
  author =	 "Chamberlain Fong",
  title =	 "{Discrete-Time Dataflow Models for Visual Simulation
                  in Ptolemy II}",
  institution =	 ERL,
  year =	 2001,
  type =	 MEMO,
  number =	 {M01/9},
  address =	 UCB
}

@Article{furuta92swingup,
  author =	 {K. Furuta and M. Yamakita and S. Kobayashi},
  title =	 {Swingup control of inverted pendulum using
                  pseudo-state feedback},
  journal =	 {Journal of Systems and Control Engineering},
  year =	 1992,
  volume =	 206,
  pages =	 {263--269}
}

@Article{furuta92swingup,
  author =	 {K. Furuta and M. Yamakita and S. Kobayashi},
  title =	 {Swingup control of inverted pendulum using
                  pseudo-state feedback},
  journal =	 {Journal of Systems and Control Engineering},
  year =	 1992,
  volume =	 206,
  pages =	 {263--269}
}

@InProceedings{furuta94pendulum,
  author =	 {Furuta, K. and M. Yamakita and S. Kobayashi and
                  M. Nishimura.},
  title =	 {A new inverted pendulum apparatus for eduction},
  booktitle =	 {{IFAC} Symposium on Advances in Control Education},
  pages =	 {191-196},
  year =	 1994,
  address =	 {Boston, MA}
}

@TechReport{gaf98,
  author =	 "G{\"a}fvert, M.",
  title =	 "Derivation of {Furuta} pendulum dynamics",
  institution =	 "Department of Automatic Control, Lund Institute of
                  Technology",
  year =	 1998,
  address =	 "Lund, Sweden"
}

@inproceedings{gagnon00efficient,
  author =	 "Etienne Gagnon and Laurie J. Hendren and Guillaume
                  Marceau",
  title =	 "Efficient Inference of Static Types for {Java}
                  Bytecode",
  booktitle =	 SAS,
  series =	 LNCS,
  number =       1824,
  pages =	 "199--219",
  year =	 2000
}

@Book{gajski00SpecC,
  editor =	 {Daniel D. Gajski},
  title =	 {{SpecC}: {S}pecification Language and Methodology},
  publisher =	 KLUWER,
  year =	 {2000}
}

@Book{gamma95patterns,
  author =	 {Erich Gamma and Richard Helm and Ralph Johnson and
                  John Vlissides},
  title =	 {Design Patterns},
  Publisher =	 AW,
  year =	 {1995}
}

@Article{gibbs,
  author =	 {W. Wayt Gibbs},
  title =	 {Software's Chronic Crisis},
  journal =	 {Scientific American},
  year =	 {1994},
  volume =	 {271},
  number =	 {3},
  month =	 sep,
  pages =	 {86-95},
  OPTannote =	 { This article provides a good overview of the
                  problems in the software engineering industry. Prior
                  to reading the article I was familiar with most of
                  the contents; impressive statistics: a survey of 24
                  large scale software projects reveals that 55% are
                  overbudget, %68 are late and 88% had to be
                  substantially redesigned. Some interesting tidbits
                  that I did pick up included the formal method
                  approach referred to as the ``B method.'' Next was
                  the issue of creating software components. Brad Cox
                  once ran a software company that sold software
                  components for compilers. Cox noticed the difficulty
                  of selling the components. There were two problems:
                  1) Retooling components for each new customer is
                  expensive. 2) Customers want to pay for a component
                  once and get copies for free. Cox believes that the
                  second problem will be dealt with by paying for
                  software on a per use basis. Network computers are
                  amenable to this approach.}
}

@ARTICLE(girault99starchart,
  author =	 {Alain Girault and Bilung Lee and Edward A. Lee},
  title =	 {Hierarchical Finite State Machines with Multiple
                  Concurrency Models},
  journal =	IEEETCAD,
  year =	 {1999},
  volume =	 {18},
  number =	 {6},
  month =	 jun,
  pages =	 {742--760}
)


@Book{godefroid96dissertation,
  author =	 {Patrice Godefroid},
  title =	 {Partial-Order Methods for the Verification of
                  Concurrent Systems: An Approach to the State Space
                  Explosion Problem},
  publisher =	 SPRINGER,
  year =	 1996,
  number =	 1032,
  series =	 LNCS
}

@Book{gordon79denotational,
  author =	 {Michael J. C. Gordon},
  title =	 {The Denotational Description of Programming
                  Languages},
  publisher =	 SPRINGER,
  year =	 1979,
  annote =	 {This book provides an EXCELLENT overview of
                  denotational semantics in a very non-mathematical
                  manner. The presentation is not trivial and is
                  relatively comprehensive but it replaces
                  mathematical details with intuitive
                  arguments. Whenever math is left out, Gordon makes
                  the reader aware of omissions and suggests
                  references that the reader can look at for more
                  information.}
}

@Book{gosling96jls,
  author =	 {James Gosling and Bill Joy and Guy Steele},
  title =	 "The {Java} Language Specification",
  publisher =	 AW,
  year =	 1996
}

@Book{grid,
  title =	 {The Grid: Blueprint for a New Computing
                  Infrastructure},
  publisher =	 MK,
  year =	 1999,
  editor =	 {Ian Foster and Carl Kesselman},
  address =	 {San Francisco, California},
  edition =	 {1st},
  annote =	 { BOOK SUMMARY: The Grid forecasts a future in which
                  computational resources will be networked and hence
                  distributed computation will be widely
                  available. The authors predict that this new
                  infrastructure will usher in a new age in which the
                  usage of computational power will be fundamentally
                  changed. The book places emphasis on comprehensively
                  including the CS community (and beyond) in
                  participating in the forecast. To this end, all
                  levels of the computing industry are
                  considered. CHAPTER 1: This chapter does a good job
                  in setting the framework for the methodology of the
                  book. The Grid uses two approaches in justifying
                  their claims. First, previous networked
                  infrastructures are considered to determine what
                  parallels exists between those networks and networks
                  of computing entities. In particular railroads,
                  electrical power, banking systems and telephone
                  networks are mentioned as networks that will be
                  considered in the book. A second methodology that
                  the book considers is envision how various groups in
                  society would benefit from access to a computational
                  grid. This chapter made several key points: 1) Local
                  Before Global Throughout history networked
                  infrastructures started as local establishments. For
                  example, prior to widely available long distance
                  phone service, many cities had robust city-wide
                  telephone systems. 2) Caching Successful networked
                  infrastructures have distributed capacity throughout
                  the network. For example, physical goods
                  distribution systems have local warehouses, regional
                  warehouses and national warehouses to enable
                  efficient just-in-time resupply. I was very
                  impressed with an example of how the City of Chicago
                  grew out of the network infrastructure for
                  delivering agricultural goods. I was less impressed
                  with a similar example about Champaign- Urbana. Both
                  of these examples served to show that the growth of
                  grids can have a large social impact. The chapter
                  concluded by describing several groups that could
                  benefit from a large scale, widely available
                  computational grid: * Scientists and Engineers need
                  the Grid * Corporations need the Grid *
                  Environmental Science needs the Grid * Schools and
                  Universities need the Grid}
}

@Article{guernic86signal,
  author =	 "P. Le Guernic and A. Benveniste and P. Bournai and
                  T. Gautier",
  title =	 "Signal: A Data Flow Oriented Language for Signal
                  Processing",
  journal =	 IEEETASSP,
  year =	 {1986},
  volume =	 {34},
  pages =	 {362-374}
}

@Book{gunter92semantics,
  author =	 {Carl A. Gunter},
  title =	 {Semantics of Programming Languages: Structures and
                  Techniques},
  publisher =	 MIT,
  year =	 1992,
  series =	 {Foundations of Computing Series}
}

@inproceedings{gupta02balboa,
  author =	 {F. Doucet and M. Otsuka and S. Shukla and R. Gupta},
  title =	 {An Environment for Dynamic Component Composition for
                  Efficient Co-Design},
  booktitle =	 DATE,
  year =	 2002
}

@BOOK{halbwachs93synchronousReactive,
  author =	 "Nicolas Halbwachs",
  title =	 "Synchronous Programming of Reactive Systems",
  publisher =	 KLUWER,
  year =	 1993,
  series =	 "Kluwer International Series in Engineering and
                  Computer Science, 215",
  address =	 "The Netherlands"
}

@InProceedings{haldar01matlabSynthesis,
  author =	 {Malay Haldar and Anshuman Nayak and Alok Choudhary
                  and Prith Banerjee},
  title =	 {A System for synthesizing optimized {FPGA} hardware
                  from {Matlab}},
  booktitle =	 ICCAD,
  year =	 2001,
  month =	 nov,
  organization = {SIGDA},
  publisher =	 ACM
}

@InProceedings{hansen88cycleDriven,
  author =	 {C. Hansen},
  title =	 {Hardware logic simulation by compilation},
  booktitle =	 DAC,
  year =	 1988,
  organization = {SIGDA},
  publisher =	 ACM
}

@Book{hansen94domains,
  author =	 {Viggo Stoltenberg-Hansen and Ingrid Lindstrom and
                  Edward R. Griffor},
  title =	 {Mathematical Theory of Domains},
  publisher =	 {Cambridge University Press},
  year =	 1994,
  annote =	 {Straight forward reading. Nice explanation of fixed
                  points.}
}

@InCollection{henzinger01giotto,
  author =	 "T. A. Henzinger and B. Horowitz and C. M. Kirsch",
  title =	 "Giotto: a time-triggered language for embedded
                  programming",
  booktitle =	 EMSOFTW,
  series =	 LNCS,
  number =	 2211,
  publisher =	 SPRINGER,
  year =	 2001,
  pages =	 "166-184",
}

@InProceedings{henzinger02emachine,
  author =	 "Thomas A. Henzinger and Christoph M. Kirsch",
  title =	 "The {Embedded Machine}: Predictable, Portable
                  Real-Time Code",
  booktitle =	 PLDI,
  year =	 2002,
  month =	 jun,
  organization = {SIGPLAN},
  publisher =	 ACM
}

@Article{hewitt77messagePassing,
  author =	 {Hewitt, Carl},
  title =	 {Viewing Control Structures as Patterns of Passing
                  Messages},
  journal =	 {Journal of Artifical Intelligence},
  year =	 1977,
  volume =	 8,
  number =	 3,
  pages =	 {323-363},
  month =	 jun
}

@InProceedings{hewitt77functionals,
  author = 	 {Carl Hewitt and Henry Baker},
  title = 	 {Actors and Continuous Functionals},
  booktitle =	 {Proceeding of Working Conference on Formal Description of Programming Concepts},
  organization = IFIP,
  pages =	 {267--387},
  year =	 1977,
  month =	 aug
}

@inproceedings{hilfinger90silage,
  author =	 {P. Hilfinger and J. Rabaey and D. Genin and
                  C. Scheers and H. De Man},
  title =	 {{DSP} Specification Using the {S}ilage Language},
  booktitle =	 ICASSP,
  address =	 {Alburqurque, New Mexico},
  year =	 {1990},
  month =	 apr,
}

@incollection{ho88dataflow,
  author =	 {W. H. Ho and E. A. Lee and D. G. Messerschmitt},
  title =	 {High-Level Data Flow Programming for Digital Signal
                  Processing},
  booktitle =	 {VLSI Signal Processing III},
  year =	 {1988},
  publisher =	 IEEE,
  keywords =	 {sdf scheduling}
}

@Article{hog81,
  author =	 {E.B. Hogenauer},
  title =	 {An economical class of digital filters for
                  decimation and interpolation},
  journal =	IEEETASSP,
  year =	 1981,
  volume =	 29,
  number =	 2,
  pages =	 {155-162}
}

@Article{hong99transmission,
  author =	 {K.S. Hong and K.J. Yang and K.I. Lee},
  title =	 {An Object-Oriented Modeling for Gasoline Engine and
                  Automatic Transmission Systems},
  journal =	 {Computer Applications in Engineering Education},
  year =	 1999,
  volume =	 7,
  number =	 2,
  pages =	 {107--109},
  month =	 jun
}

@InProceedings{hudak98domainSpecific,
  author =	 "Paul Hudak",
  title =	 "Modular domain specific languages and tools",
  pages =	 "134--142",
  booktitle =	 "Proceedings of the International Conference on
                  Software Reuse",
  year =	 1998,
  publisher =	 IEEE,
  month =	 jun,
  url =
                  "http://www.cs.yale.edu/HTML/YALE/CS/HyPlans/hudak-paul/hudak-dir/icsr98.ps"
}

@inproceedings{hutchings99JHDL,
  author =	 "Brad Hutchings and others",
  title =	 "A {CAD} Suite for High-Performance {FPGA} Design",
  booktitle =	 FCCM,
  publisher =	 IEEE,
  pages =	 "12--24",
  year =	 "1999"
}

@Article{iworld:smil,
  author =	 {Nate Zelnick},
  title =	 {Time-Based Multimedia Technology Nears Approved
                  Status},
  journal =	 {Internet World},
  year =	 1998,
  volume =	 4,
  number =	 14,
  month =	 apr,
  pages =	 1
}

@Article{jefferson:virtual,
  author =	 {David R. Jefferson},
  title =	 {Virtual Time},
  journal =	 toplas,
  year =	 {1985},
  volume =	 {7},
  number =	 {3},
  month =	 jul,
  pages =	 {404-425},
  annote =	 {The basic idea here is to create a {\em virtual}
                  notion of time which facilitates
                  rollback. Processors can optimistically move ahead
                  (in time) of predecessors and then move back in time
                  if a "past" event arrives which changes the trace
                  history thus far observed.}
}

@article{jerraya01colif,
  title =	 {{Colif}: A Design Representation for
                  Application-Specific Multiprocessor {SOCs}},
  author =	 {Wander O. Ces\'ario and Gabriela Nicolescu and Lovic
                  Gauthier and Damien Lyonnard and Ahmed A. Jerraya},
  journal =	IEEEDTC,
  volume =	 18,
  number =	 65,
  month =	 sep,
  year =	 2001,
  pages =	 {8-19}
}

@Misc{jode,
  author =	 {Jochen Hoenicke},
  title =	 {JODE: Java Optimizer and Decompiler},
  howpublished = {http://jode.sourceforge.net}
}

@InProceedings{jones,
  author =	 {C.B. Jones},
  title =	 {Compositionality, Interference and Concurrency},
  booktitle =	 {Symposium in Celebration of the Work of
                  C.A.R. Hoare},
  year =	 1999
}

@TechReport{jsr14generics,
  author =	 {Gilad Bracha},
  title =	 "Adding Generics to the {Java} programming language",
  institution =	 {Java Community Process},
  year =	 2001,
  type =	 {Java Specification Request},
  number =	 14,
  month =	 aug
}

@InProceedings{kahn74pn,
  author =	 {Gilles Kahn},
  title =	 {The Semantics of a Simple Language for Parallel
                  Programming},
  booktitle =	 IFIPCONGRESS,
  year =	 1974,
  organization = IFIP,
  publisher =	 NH,
  pages =	 {471-475},
  annote =	 {This is regarded as a seminal paper and has a
                  prominent position in reference listings of many top
                  quality papers. Personally I find the presentation
                  of this paper rather cluttered and many of the
                  claims of the paper are not justified. In addition,
                  the presentation is not even reasonably
                  self-contained as many key points are left out and
                  simply referred to from other papers. Nevertheless,
                  this paper contains many key points related to
                  concurrent programming. The paper accomplishes the
                  following. 1) It applies Scott's Domain Theory to
                  parallel programming. 2) It gives some simple
                  primitives for a parallel programming language
                  (e.g., processes with blocking reads and
                  non-blocking writes on one sender/one receiver FIFO
                  queues) and shows that since these primitives imply
                  continuous functions on a CPO, then arbitrary
                  compositions of the processes result in a
                  deterministic program. More notes on the first
                  point: I am not aware of a paper that used Scott's
                  domain theory to deal with parallel programs prior
                  to Kahn's paper. One of the references (reference
                  number 10) is a paper by Milner and it may be the
                  case that Milner applied domain theory to parallel
                  programs first (I have not read this paper
                  yet). Kahn does a good job explaining the functional
                  that is associated with a network of parallel
                  processes. He treats the functional as a set of
                  fixpoint equations (one for each process in the
                  network). More notes on the second point: In fact
                  the second point justifies the first. Unfortunately,
                  I don't think that Kahn justifies the second
                  point. He does a very good job in rigorously
                  defining the operational semantics of his
                  programming language (the forerunner of PN). In
                  order to use domain theory he needed to prove that
                  the processes were continuous. He does this in one
                  short paragraph immediately before section 3
                  (Fixpoint Equations) with the cavalier statement
                  "Any process written in the simple programming
                  language of section 1 corresponds to a set of
                  continuous functions. How?!? This is non-trivial
                  enough to me that it deserves being included in the
                  paper. If we accept this jump, then we see that the
                  programs are deterministic because operationally
                  they are equal to the least fixpoint solution of the
                  network functional. In other words, the limit of
                  computation exists and is unique. I appreciated how
                  Kahn explained the usefulness of his
                  results. Whether a given function is implemented as
                  a single sequential function or a set of concurrent
                  functions will not impact the rest of the system
                  that is connected to the function in question. In
                  addition, a parallel program can be safely simulated
                  on a sequential machine. The only problem may be
                  that on a sequential machine that program may cease
                  execution earlier than on a parallel machine
                  (partial correctness as opposed to total
                  correctness). In either case, whatever outputs are
                  produced by the sequential machine will be
                  correct. This is similar to my localized zeno
                  condition demo.}
}

@PHDTHESIS(kalavade95codesign,
  author =	 "Asawaree Kalavade",
  title =	 "System-Level Codesign Of Mixed Hardware-Software
                  Systems",
  school =	 EECS,
  year =	 "1995"
)

@Article{karsai97modelBased,
  author =	 {Janos Sztipanovits and Gabor Karsai},
  title =	 {Model-integrated Computing},
  journal =	 COMPUTER,
  year =	 1997,
  month =	 apr,
  pages =	 {110--112},
  annote =	 {Overview of model-based design}
}

@book{keating98reuse,
  author =	 "Michael Keating and Pierre Bricaud",
  title =	 "Reuse methodology manual for System-On-A-Chip
                  designs",
  publisher =	 KLUWER,
  year =	 "1998"
}

@InProceedings{keding00fixpoint,
  author =	 {Holger Keding and Martin Coors and Olaf Luethje and
                  Heinrich Meyr},
  title =	 "Fast Bit-true simulation",
  booktitle =	 DAC,
  month =	 jun,
  year =	 2001
}

@article{kelly61blockDiagram,
  author =	 {John L. Kelly Jr. and Carol Lochbaum and
                  V. A. Vyssotsky},
  title =	 {A Block Diagram Compiler},
  journal =	 {The Bell System Technical Journal},
  year =	 {1961},
  month =	 may,
  pages =	 {669--678}
}

@article{keutzer00mescalPlatforms,
  author =	 {K. Keutzer and S. Malik and A. R. Newton and
                  J. Rabaey and A. Sangiovanni-Vincentelli},
  title =	 {System Level Design: Orthogonolization of Concerns
                  and Platform-Based Design},
  journal =	 IEEETCAD,
  volume =	 {19},
  number =	 {12},
  month =	 dec,
  year =	 2000
}

@inproceedings{kiczales01aspectJ,
  author =	 "Gregor Kiczales and Erik Hilsdale and Jim Hugunin
                  and Mik Kersten and Jeffrey Palm and William
                  G. Griswold",
  title =	 "An Overview of {AspectJ}",
  booktitle =	 ECOOP,
  pages =	 "327--353",
  year =	 "2001",
  url =		 "citeseer.nj.nec.com/kiczales01overview.html"
}

@inProceedings{kiczales97aspectoriented,
  author =	 "Gregor Kiczales and John Lampinga and Anurag Mendhekar and Chris Maeda and Cristina Videira Lopes and Jean-Marc Loingtier and John Irwin",
  title =	 "Aspect-Oriented Programming",
  booktitle =	 ECOOP,
  number =	 1241,
  series =	 LNCS,
  publisher =	 SPRINGER,
  pages =	 "220--242",
  year =	 1997
}

@Article{kienhuis01SBF,
  author =	 {Bart Kienhuis and Ed F. Deprettere},
  title =	 {Modeling Stream-Based Applications Using the {SBF}
                  Model of Computation},
  journal =	 {The Journal of VLSI Signal Processing-Systems for
                  Signal, Image, and Video Technology},
  publisher =	 KLUWER,
  year =	 2003,
  volume =	 34,
  number =	 3,
  pages =	 {291--300}
}

@PhdThesis{kienhuis99yChart,
  author =	 {Bart A.C.J. Kienhuis},
  title =	 {Design Space Exploration of Stream-based Dataflow
                  Architectures: Methods and Tools},
  school =	 {TU Delft},
  year =	 1999,
  month =	 jan
}

@Article{kirsch03giotto,
  author =	 {Thomas A. Henzinger and Christoph M. Kirsch and
                  Marco A.A. Sanvido and Wolfgang Pree},
  title =	 {From control models to real-time code using
                  {Giotto}},
  journal =	 {IEEE Control Systems Magazine},
  year =	 2003,
  volume =	 23,
  number =	 1,
  pages =	 {50--64}
}

@InBook{kleene52metamathematics,
  author =	 {S. C. Kleene},
  title =	 {Introduction to Metamathematics},
  chapter =	 12,
  publisher =	 NH,
  year =	 1952,
  pages =	 342
}

@inproceedings{knoll90cadisp,
  author =	 {Alois Knoll and Rupert Nierberle},
  title =	 {{CADiSP}: A Graphical Compiler for the Programming
                  of {DSP} in a Completely Symbolic Way},
  booktitle =	 ICASSP,
  year =	 1990,
  month =	 apr,
  pages =	 {1077--1080}
}

@article{knoll91dataflow,
  author =	 {Alois Knoll and Markus Freericks},
  title =	 {An Applicative Real-time Language for {DSP}
                  Programming Supporting Asynchronous Data-Flow
                  Concepts},
  journal =	 {Microprocessing and Microprogramming},
  volume =	 {32},
  year =	 {1991},
  month =	 aug,
  pages =	 {541--548}
}

@inproceedings{kock00yapi,
  author =	 "E. de Kock and G. Essink and W. Smits and P. van der
                  Wolf and J. Brunel and W. Kruijtzer and P. Lieverse
                  and K. Vissers",
  title =	 "{YAPI}: Application modeling for signal processing
                  systems",
  booktitle =	 DAC,
  pages =	 "402--405",
  year =	 "2000",
  month =	 jun
}

@incollection{koo01multivehicle,
  author =	 "T. J. Koo and J. Liebman and C. Ma and S. Sastry",
  title =	 "Hierarchical Approach for Design of Multi-Vehicle
                  Multi-Modal Embedded Software",
  booktitle =	 EMSOFTW,
  series =	 LNCS,
  number =	 2211,
  publisher =	 SPRINGER,
  year =	 2001,
  pages =	 "344--360"
}

@Article{kopetz94ttp,
  author =	 {H. Kopetz and G. Grunsteidl},
  title =	 {{TTP} -- a protocol for fault-tolerant real-time
                  systems},
  journal =	 COMPUTER,
  year =	 1994,
  volume =	 27,
  pages =	 {14--23},
  month =	 jan
}

@InProceedings{kundu95ariadne,
  author =	 {Joydip Kundu and Janice E. Cuny},
  title =	 {The Integration of Event- and State-Based Debugging
                  in Ariadne},
  booktitle =	 {International Converence on Parallel Processing},
  volume =	 {II},
  year =	 1995,
  publisher =	 {CRC Press},
  address =	 {},
  month =	 aug,
  pages =	 {130-134},
  annote =	 {Kundu and Cuny propose a multi-level debugging
                  strategy that uses event-based debugging at a high
                  level and state-based debugging at a low level. The
                  event-based strategy uses behavioral analysis of
                  event traces (from previous executions) to narrow
                  the focus of attention. State-based approaches are
                  closer to our notion of sequential debuggers such as
                  GDB. The state-based approach allows a user to
                  examine an execution to an arbitrary level of
                  detail. The notion of an abstract (or aggregate)
                  event is explained. Processes are broken into core
                  sets (those that execute part of an abstract event),
                  influence sets (those that could have causally
                  affected a component of an abstract event) and other
                  sets (the remaining processes). When stopping an
                  execution, core processes are stopped at their
                  earliest event, influence processes are stopped
                  immediately after the latest event which could have
                  causally influenced the abstract event, and core
                  processes are stopped immediately before the
                  earliest local event that is part of the abstract
                  event. The remainder of this article was not very
                  useful. }
}

@Article{lamport:logical,
  author =	 {Leslie Lamport},
  title =	 {Time, Clocks, and the Ordering of Events in a
                  Distributed System},
  journal =	 CACM,
  year =	 1978,
  volume =	 21,
  number =	 7,
  month =	 jul,
  pages =	 {558-565},
  annote =	 {This paper introduces the concept of the ``happened
                  before'' relation. It then uses this relation to
                  define the {\em logical clock} condition or {\em
                  weak clock condition}. The happened before relation
                  is imposes a partial ordering. Lamport extends
                  happened before to a total ordering by define
                  equality of clock values. Unfortunately, certain
                  anomalous behavior can occur given the total
                  ordering. To address this issue, Lamport shows how
                  properly synchronized physical clocks can be used in
                  a distributed system to avoid this anomalous
                  behavior. What follows is a more detailed
                  summary. {\bf ``Happened Before'' An Irreflexive
                  Partial Order} We assume a network of sequential
                  processes. The events of any single process are
                  either send, receive or internal and the set of
                  events are totally ordered. Globally a ``happens
                  before,'' written $\rightarrow$, relation can be
                  established on the set of total events for all
                  processes. If event $a$ and $b$ are events in the
                  same process, then $a \rightarrow b$. If $a$ is send
                  event of a particular message and $b$ is the receive
                  event of that same process, then $a \rightarrow
                  b$. If $a \rightarrow b$ and $b \rightarrow c$ then
                  $a \rightarrow c$. Events $a$ and $b$ are considered
                  concurrent if $a \notrightarrow b$. It is assumed
                  that $a \notrightarrow a$ for all events. From this
                  we can see that $\rightarrow$ is an irreflexive
                  partial order. {\bf ``Logical Clocks'' A Reflexive
                  Partial Order} A clock is a function which assigns
                  to each event a number (where the number is not
                  necessarily related to physical time). The clock of
                  event $a$ is written $C(a)$. Lamport specified a
                  clock condition as follows: If $a \rightarrow b$
                  then $C(a) < C(b)$. This clock condition means that
                  the clock values are ``correct'' with respect to
                  $\rightarrow$. Our partial order can be made a total
                  order, $\doublerightarrow$ on all events by placing
                  a total order on all processes in the distributed
                  system. $a \doublerightarrow b$ if $C_i(a) < C_j(b)$
                  or $C_i(a) = C_j(b)$ and process $P_i$ is ordered
                  before process $P_j$. We see that $a \rightarrow b$
                  implies $a \doublerightarrow b$. Note that the
                  relation $\doublerightarrow$ is not unique and there
                  are several systems of clocks which satisfy the
                  clock condition for a given $\rightarrow$. Lamport
                  discusses anomalous behavior that can occur even
                  given a correct system of logical clocks. The
                  problem is due to situation in which precedence
                  information may be based on ``external''
                  information. To deal with such situations, Lamport
                  describes the set $\bf S$ consisting of all system
                  and external events. Correspondingly, a ``happens
                  before'' relation defined on $\bf S$ is introduced
                  that is written $\longrightarrow$. In my opinion,
                  this anomalous behavior is rather dubious.}
}

@article{lapsley94processors,
  author =	 {Phil Lapsley and Jeff Bier},
  title =	 {Choosing a {DSP} Processor},
  journal =	 {DSP Applications},
  year =	 {1994},
  pages =	 {24--33},
  month =	 jan
}

@inproceedings{lauwereins94grape,
  author =	 {Rudy Lauwereins and Piet Wauters and Merleen Ade and
                  J. A. Peperstraete},
  title =	 {Geometric Parallelism and Cyclo-Static Data Flow in
                  {GRAPE-II}},
  booktitle =	 RSP,
  year =	 {1994},
  month =	 jun
}

@InProceedings{ledeczi01GME,
  author =	 {A. Ledeczi and M. Maroti and A. Bakay and G. Karsai
                  and J. Garrett and {Thomason IV}, C. and
                  G. Nordstrom and J. Sprinkle and P. Volgyesi},
  title =	 {The Generic Modeling Environment},
  booktitle =	 {Proceedings of Workshop on Intelligent Signal
                  Processing},
  year =	 2001,
  month =	 may
}

@TechReport{lee00moml,
  author =	 {Edward A. Lee and Steve Neuendorffer},
  title =	 {{MoML} - A Modeling Markup Language in {XML Version
                  0.4}},
  type =	 MEMO,
  institution =	 ERL,
  number =	 {UCB/ERL M01/12},
  year =	 2000,
  address =	 UCB,
  month =	 mar
}

@PHDTHESIS(lee00starcharts,
  author =	 "Bilung Lee",
  title =	 "Specification and Design of Reactive Systems",
  school =	 EECS,
  year =	 "2000"
)

@TechReport{lee01softwalls,
  author =	 {Edward A. Lee},
  title =	 {{Soft Walls} - {Modifying} Flight Control Systems to
                  Limit the Flight Space of Commercial Aircraft},
  type =	 MEMO,
  institution =	 ERL,
  number =	 {UCB/ERL M01/31},
  year =	 2001,
  address =	 UCB,
  month =	 oct
}

@article{lee03actorDesign,
  title =	 "Actor-Oriented Design of Embedded Hardware and
                  Software Systems",
  author =	 "Edward A. Lee and Stephen Neuendorffer and Michael
                  J. Wirthlin",
  journal =	 "Journal of Circuits, Systems, and Computers",
  year =	 2003,
  month =	 jun,
  volume =	 12,
  number =	 3,
  pages =	 {231--260}
}

@incollection{lee86sdf,
  author =	 {Edward A. Lee and David G. Messerschmitt},
  title =	 {Synchronous Data Flow: Describing {DSP} Algorithms
                  for Parallel Computation},
  booktitle =	 {VLSI Signal Processing II},
  year =	 {1986},
  publisher =	 IEEE,
  keywords =	 {sdf}
}

@article{lee87sdfArchitecture,
  author =	 {Edward A. Lee and David G. Messerschmitt},
  title =	 {Pipeline Interleaved Programmable {DSP}s:
                  Architecture},
  journal =	IEEETASSP,
  year =	 1987,
  volume =	 35,
  number =	 9,
  pages =	 {1320--1333},
  month =	 sep
}

@article{lee87sdfProgramming,
  author =	 {Edward A. Lee and David G. Messerschmitt},
  title =	 {Pipeline Interleaved Programmable {DSP}s:
                  Synchronous Data Flow Programming},
  journal =	 IEEETASSP,
  year =	 1987,
  volume =	 35,
  number =	 9,
  pages =	 {1334--1345},
  month =	 sep
}

@article{lee87sdfScheduling,
  author =	 {Edward A. Lee and David G. Messerschmitt},
  title =	 {Static Scheduling of Synchronous Data Flow Programs
                  for Digital Signal Processing},
  journal =	 IEEETC,
    year =	 1987,
  volume =	 36,
  number =	 1,
  pages =	 {24--35},
  month =	 jan
}

@incollection{lee88blockDiagram,
  author =	 {Edward A. Lee},
  title =	 {Recurrences, Iteration, and Conditionals in
                  Statically-Scheduled Block Diagram Languages},
  booktitle =	 {VLSI Signal Processing III},
  year =	 {1988},
  publisher =	 IEEE,
  keywords =	 {sdf scheduling gabriel}
}

@article{lee89gabriel,
  author =	 {E. A. Lee and W. H. Ho and E. E. Goei and J. C. Bier
                  and S. Bhattacharyya},
  title =	 {Gabriel: A Design Environment for {DSP}},
  journal =	 ieeeassp,
  year =	 {1989},
  volume =	 {37},
  number =	 {11},
  pages =	 {1751--1762},
  month =	 nov,
  keywords =	 {gabriel sdf}
}

@inproceedings{lee89multiprocessor,
  author =	 {Edward. A. Lee and Soonhoi Ha},
  title =	 {Scheduling Strategies for Multiprocessor Real-time
                  {DSP}},
  booktitle =	 {GLOBECOM},
  month =	 nov,
  year =	 {1989}
}

@article{lee90sdfArchitecture,
  author =	 {Edward A. Lee and Jeffery C. Bier},
  title =	 {Architectures for Statically Scheduled Dataflow},
  journal =	 {Journal of Parallel and Distributed Computing},
  year =	 1990,
  volume =	 10,
  pages =	 {333--348},
  keywords =	 {sdf scheduling gabriel}
}

@incollection{lee91scheduling,
  author =	 {Edward. A. Lee},
  title =	 {Static Scheduling of Data-Flow Programs for {DSP}},
  booktitle =	 {Advanced Topics in Dataflow Computing},
  editor =	 {L. Bic and J.-L. Gaudiot},
  publisher =	 PH,
  year =	 {1991}
}

@inproceedings{lee94course,
  author =	 {Edward A. Lee},
  title =	 {Computing and Signal Processing: An Experimental
                  Multi-disciplinary Course},
  booktitle =	 ICASSP,
  year =	 1994,
  pages =	 {VI-45--VI-48},
  month =	 apr
}

@techreport{lee94dataflow,
  title =	 {Dataflow Process Networks},
  author =	 {Edward A. Lee},
  institution =	 ERL,
  year =	 1994,
  type =	 MEMO,
  number =	 {UCB/ERL M94/53},
  address =	 UCB,
  month =	 jul
}

@Article{lee95dataflow,
  author =	 {Edward A. Lee and Thomas M. Parks},
  title =	 {Dataflow process networks},
  journal =	 {Proceedings of the IEEE},
  year =	 1995,
  volume =	 83,
  number =	 5,
  pages =	 {773--801},
  month =	 may
}

@TechReport{lee97firingSemantics,
  author =	 {Edward A. Lee},
  title =	 {A Denotational Semantics for Dataflow with Firing},
  institution =	 ERL,
  year =	 1997,
  type =	 MEMO,
  number =	 {UCB/ERL M97/3},
  address =	 UCB,
  month =	 jan
}

@TechReport{lee97taggedSignal,
  author =	 {Edward A. Lee and Alberto Sangiovanni-Vincentelli},
  title =	 {A Denotational Framework for Comparing Models of
                  Computation},
  institution =	 ERL,
  year =	 1997,
  type =	 MEMO,
  number =	 {UCB/ERL M97/11},
  month =	 sep,
  address =	 UCB,
}

@Article{lee98taggedSignal,
  author =	 {Edward A. Lee and Alberto Sangiovanni-Vincentelli},
  title =	 {A Framework for Comparing Models of Computation},
  journal =	 IEEETCAD,
  year =	 1998,
  volume =	 17,
  number =	 12,
  month =	 dec
}

@Misc{lejos,
  author =	 {Jose Solorzano and others},
  title =	 {{leJos: Java for the RCX}},
  howpublished = {http://lejos.sourceforge.net}
}

@inproceedings{lemeur99generics,
  author =	 "Anne-Francoise Le Meur and Charles Consel",
  title =	 "Generic Software Component Configuration Via Partial
                  Evaluation",
  booktitle =	 ECOOP,
  month =	 aug,
  year =	 "2000"
}

@INCOLLECTION{lemmon00hybrid,
  author =	 {M. Lemmon},
  title =	 {On the existence of solutions to controlled hybrid
                  automata},
  booktitle =	 HSCC,
  publisher =	 SPRINGER,
  series =	 LNCS,
  number =	 1790,
  year =	 2000,
  pages =	 {229-242}
}

@TechReport{leroy97unboxing,
  author =	 {X. Leroy},
  title =	 "Effectiveness of type-based unboxing",
  institution =	 {Boston College Computer Science Department},
  year =	 1997,
  number =	 {BCCS-97-03},
  month =	 jun,
  note =	 {In Workshop on Types in Compilation '97}
}

@InProceedings{liao00systemC,
  author =	 {Stan Y. Liao},
  title =	 {Towards a new standard for system-level design},
  booktitle =	 CODES,
  year =	 2000,
  month =	 may,
  organization = {SIGDA},
  publisher =	 ACM
}

@InProceedings{liao97scenic,
  author =	 {Stan Y. Liao and Steve Tjiang and Rajesh Gupta},
  title =	 {An efficient implementation of reactivity for
                  modeling hardware in the {Scenic} design
                  environment},
  booktitle =	 DAC,
  year =	 1997,
  organization = {SIGDA},
  publisher =	 ACM
}

@book{lindholm97jvm,
  author =	 "T. Lindholm and F. Yellin",
  title =	 "The {Java} Virtual Machine Specification",
  publisher =	 AW,
  year =	 "1997"
}

@INPROCEEDINGS(liu00cont_disc,
  author =	 {Jie Liu and Edward A. Lee},
  title =	 {Component-Based Hierarchical Modeling of Systems
                  with Continuous and Discrete Dynamics},
  booktitle =	 {2000 IEEE International Symposium on Computer-Aided
                  Control System Design, Anchorage, Alaska, USA},
  year =	 {2000},
  pages =	 {95--100},
  month =	 sep
)

@PHDTHESIS{liu01frameworks,
  author =	 "Jie Liu",
  title =	 "Responsible Frameworks for Heterogenous Modeling and
                  Design of Embedded Systems",
  school =	 EECS,
  year =	 "2001"
}

@InProceedings{liu02furuta,
  author =	 {Jie Liu and Johan Eker and Jorn W. Janneck and
                  Edward A. Lee},
  title =	 {Realistic Simulations of Embedded Control Systems},
  booktitle =	 {Proceedings of the International Federation of
                  Automatic Control 15th World Congress},
  year =	 2002,
  month =	 jul
}

@InProceedings{liu03causality,
  author =	 {Jie Liu and Edward A. Lee},
  title =	 {On the Causality of Mixed-Signal and Hybrid Models},
  booktitle =	 HSCC,
  publisher =    SPRINGER,
  series =       LNCS,
  number =       2623,
  year =	 2003,
  month =	 apr
}

@Article{liu03hybridModeling,
  author =	 {Jie Liu and Edward A. Lee},
  title =	 {A Component-Based Approach to Modeling and
                  Simulating Mixed-Signal and Hybrid Systems},
  journal =	 {ACM Trans. on Modeling and Computer Simulation},
  year =	 2003,
  volume =	 12,
  number =	 4,
  pages =	 {343--368},
  month =	 oct
}

@article{liu03timedMultitasking,
  author =	 {Jie Liu and Edward A. Lee},
  title =	 {Timed multitasking for real-time embedded software},
  journal =	 {IEEE Control Systems Magazine},
  year =	 2003,
  volume =	 23,
  number =	 1,
  pages =	 "65-75"
}

@TECHREPORT(liu98ctdomain,
  author =	 {Jie Liu},
  title =	 {Continuous Time and Mixed-Signal Simulation in
                  {Ptolemy II}},
  institution =	 ERL,
  year =	 1998,
  type =	 MEMO,
  number =	 {M98/74},
  address =	 UCB,
  month =	 jul
)

@INPROCEEDINGS(liu99hybrid,
  author =	 {J. Liu and X. Liu and T. J. Koo and B. Sinopoli and
                  S. Sastry and E. A. Lee},
  title =	 {A Hierarchical Hybrid System Model and Its
                  Simulation},
  booktitle =	 CDC,
  year =	 {1999},
  month =	 dec
)

@INPROCEEDINGS(liu99mems,
  author =	 "J. Liu and B. Wu and X. Liu and E. A. Lee",
  title =	 "Interoperation of heterogeneous {CAD} tools in
                  {Ptolemy II}",
  booktitle =	 "Symposium on Design, Test, and Microfabrication of
                  MEMS/MOEMS, Paris",
  year =	 "1999",
  month =	 mar
)

@TechReport{luckham,
  author =	 {David C. Luckham and James Vera and Sigurd Meldal},
  title =	 {Three Concepts of System Architecture},
  institution =	 {Stanford Computer Science Lab},
  year =	 1995,
  number =	 {CSL-TR-95-674},
  month =	 jul,
  annote =	 {This paper does a good job of formalizing the notion
                  of {\em architecture}. Their notion of architecture
                  is similar to the notion of {\em model of
                  computation} except that they go further. To them
                  architecture is closer to what one might expect
                  within the hardware community in that architecture
                  describes both the semantics of types of systems as
                  well as the implementation of a particular
                  system. They introduce three concepts of
                  architecture: object connection, interface
                  connection and plug & socket. The three concepts are
                  successively more refined (as given in the order
                  above). In describing the three concepts the notion
                  of conformance is necessary: when a system conform
                  to a given architecture. Conformance is reached
                  based on the following three criteria: 1)
                  Decomposition - Each interface in an architecture
                  must be associated with a unique module in the
                  system. 2) Interface Conformance - Each component
                  must conform to its interface. 3) Communication
                  Integrity - A system's components interact {\em
                  only} as specified by the architecture. Note in the
                  preceding paragraph how this paper has a few
                  problems. For example, the term interface as used
                  immediately above is given slightly different
                  meanings at different points in the paper. An object
                  connection architecture specifies an interface for
                  given modules of a system but does not specify
                  dependency between modules. Object connection (O-O)
                  architecture specifications are what object oriented
                  software designers are familiar with. An O-O
                  architecture describes the signature of functions
                  but not how one function depends on another nor the
                  order in which function calls should be made. With
                  an O-O architecture, the interchange of two modules
                  that implement the same interface will not
                  necessarily result in the same program
                  behavior. While an O-O architecture specification
                  focuses on syntactic information such as signature
                  of methods, an interface architecture specification
                  provides semantics information. Here we include
                  information about the order in which functions
                  should be called as well as dependencies between
                  modules. Two modules that implement the same
                  interface may be exchanged with out changing the
                  program's behavior. This leads to two definitions. A
                  safe interface is one in which the use of the
                  interface does not change the interface's
                  function. A communication interface is one in which
                  the use of the interface can influence future uses
                  of the interface. The result is that a module can
                  not use a safe interface to communicate to another
                  module. This is not the case for a communication
                  interface. The problem with an interface
                  architecture specification is the proliferation of
                  interface features and connections. As the size of
                  architectures grow, we don't want the number of
                  connections to become unmanageable. This is
                  essentially a problem of scale. Luckham et al
                  claimed that this was also a problem of
                  connectability. I do not agree with him on this
                  point. Connectability is essentially a syntactic
                  issue of typing. We say that two interfaces are
                  connectable if they have the same type. Correctness
                  is a stronger form of connectability. Two connected
                  interfaces are correct if they not only are
                  connectable (syntactically enabling the connection)
                  but that their connection makes sense
                  semantically. In my opinion, connectability and
                  correctness can be properly dealt with in an
                  interface architecture specification but these
                  concepts are better leveraged by plug & socket
                  architecture specifications. To deal with
                  scalability, we introduce the notion of a {\em
                  service}. A service is essentially a collection of
                  interfaces. The dual of a service is the
                  corresponding set of interfaces that can correctly
                  connect to a given service. The introduction of
                  services is the foundation of the plug & socket
                  architecture specification. A plug & socket
                  architecture specification adds hierarchy to
                  interface specifications to deal with complexity. I
                  feel that this paper is only loosely relevant to
                  me. It is a metamodel in that it describes
                  descriptions. Nevertheless, from my perspective it
                  would have been more useful for this paper to have
                  described a specific way to define interfaces. I
                  really am looking for a mathematical formalism that
                  can describe communication between intefaces.}
}

@inproceedings{ludaesecher03workflow,
  title =	 "Compiling Abstract Scientific Workflows into Web
                  Service Workflows",
  author =	 "B. Ludaescher and I. Altintas and A. Gupta",
  booktitle =	 "Proc. of the Intl. Conference on Scientific and
                  Statistical Database Management (SSDBM)",
  year =	 2003
}

@InProceedings{ludvig01neutrinos,
  author =	 {Jozsef Ludvig and James McCarthy and Stephen
                  Neuendorffer and Sonia R. Sachs},
  title =	 {Reprogrammable Platforms for High-Speed Data
                  Acquisition},
  booktitle =	 ASILOMAR,
  year =	 2001,
  month =	 nov,
  note =	 {Revised as \cite{ludvig02neutrinos}}
}

@article{ludvig02neutrinos,
  author =	 {Jozsef Ludvig and James McCarthy and Stephen
                  Neuendorffer and Sonia R. Sachs},
  title =	 {Reprogrammable Platforms for High-Speed Data
                  Acquisition},
  journal =	 {Journal of Design Automation for Embedded Systems},
  year =	 2002,
  month =	 nov,
  volume =	 7,
  number =	 4,
  pages =	 {341--364},
  publisher=KLUWER
}

@article{lygeros03hybridAutomata,
  author =	 {J. Lygeros and K. H. Johansson and S. N. Simic and
                  J. Zhang and S. Sastry },
  title =	 {Dynamical Properties of Hybrid Automata},
  journal =	 {IEEE Transactions on Automatic Control},
  year =	 "2003",
  volume =	 "48",
  number =	 "1",
  note =	 "to appear"
}

@InProceedings{macqueen77pn,
  author =	 {Gilles Kahn and David B. MacQueen},
  title =	 {Coroutines and Networks of Parallel Processes},
  booktitle =	 IFIPCONGRESS,
  year =	 1977,
  publisher =	 NH,
  pages =	 {993-998},
  annote =	 {This is the paper in which Process Networks as used
                  in the Ptolemy group are defined. The semantics of
                  Process Networks (PN) were alluded to in
                  ~\cite{kahn} but more importantly they follow the
                  notion of coroutines as laid out by Melvin
                  B. Conway. Conway states: ``a coroutine is an
                  autonomous program which communicates with adjacent
                  modules as if they were input and output
                  subroutines.'' A key feature of Conway's coroutines
                  is that they used blocking reads. Apparently the
                  blocking reads ensure determinacy (see below). A key
                  constraint of Conway's coroutines is that networks
                  of coroutines were required to be acyclic. The
                  language: * Directional, unbounded, FIFO channels
                  are connected between processes. * There are no
                  global variables. The only resources that any two
                  processe may share is a connected channel (if
                  available). * Each channel must have exactly one
                  producer process and one or more consumer
                  processes. * Processes may have parameters that are
                  independent of the communication
                  channels. Definitions: * The sequence of events
                  travelling across a channel is called the history of
                  the channel. * A network is determinate if the
                  history of all of the channels in a network are
                  determined solely by the network's process
                  parameters. Key Advantages * The single producer
                  rule (above) guarantees determinacy of process
                  networks. * Determinacy means that the input/output
                  characteristics of the networks (or the channel
                  histories) will be independent of the process
                  scheduling. It appears that Kahn and MacQueen's
                  primary contribution was to remove the acyclic
                  constraint and to show that the semantics work for
                  dynamic (or mutable) networks. They also emphasized
                  the fact that determinacy was independent of
                  scheduling by showing that a wide variety of
                  scheduling algorithms (from demand driven sequential
                  to full parallelism) had identical results in terms
                  of histories.}
}

@InProceedings{magee95darwin,
  author =	 {Jeff Magee and Naranker Dulay and Susan Eisenbach
                  and Jeff Kramer},
  title =	 {Specifying Distributed Software Architectures},
  booktitle =	 {Proc. of 5th European Software Engineering
                  Conference (ESEC)},
  pages =	 {137--153},
  year =	 1995,
  number =	 989,
  series =	 LNCS,
  publisher =	 SPRINGER,
  annotate =	 "Describes the Darwin configuration/architecture
                  description langauge."
}

@Manual{mathworks01simulinkRTW,
  title =	 {Simulink Real-time Workshop},
  author =	 "{The MathWorks}",
  year =	 2001
}

@InProceedings{mattern89vectorTime,
  author =	 {Friedemann Mattern},
  title =	 {Virtual Time and Global States of Distributed
                  Systems},
  booktitle =	 {Proceedings of the International Workshop on
                  Parallel and Distributed Algorithms},
  year =	 1989,
  pages =	 {215-226},
  publisher =	 ELSEVIER,
  annote =	 {This paper argues that the linear version of logical
                  time as presented by Lamport is not sufficient for
                  certain tasks such as distributed debugging. Mattern
                  proposes the notion of vector time as a
                  generalization of logical time. Vector time utilizes
                  a set of clock-vectors that form a lattice. One key
                  difficulty with distributed systems is that
                  processes do not have a consistent view of the
                  global state, and a common time base does not
                  exist. Chandy and Lamport propose snapshots as a way
                  to determine global state. Snapshots which depend on
                  Lamport's notion of virtual time have problems. In
                  particular, virtual time maps a poset of events onto
                  a linearly ordered set of integers. The result is
                  that information is lost. Events that are concurrent
                  are often forced to share the same ``time stamp.''
                  In some scenarios this is okay (mutual exclusion)
                  while in other cases (distributed debugging) this is
                  not sufficient. I am not convinced that this loss of
                  information is critical. Mattern assumes a poset of
                  events, $E$, for a set of distributed processes. A
                  {\em cut}, $C$, of $E$ is a subset of $E$ such that
                  $e \in C$ and $e^\prime <_P e$ implies that
                  $e^\prime \in C$. Note that $<_P$ is a less than
                  relationship applied with respect to a particular
                  process $P$. The events in a cut are referred to as
                  the {\em past} while $E \minus C$ represents events
                  in the {\em future}. A {\em cut event} is an event
                  that falls between the future and past. A {\em
                  consistent cut} is identical to a cut except that
                  $<_P$ is replaced with $<$; i.e., it applies
                  globally. With the operations $\cup$ and $\cap$, the
                  set of cuts on $E$ form a lattice. The set of
                  consistent cuts form a sublattice on the set of cuts
                  for a given set of events, $E$. >From the
                  perspective of causality, all cut events occur
                  simultaneously. For this reason, a global state
                  computed along a consistent cut is correct. In
                  vector time, a system of $N$ processes has a vector
                  of length $N$ for storing a value of time for each
                  process. Each send, receive or internal event causes
                  a process's local clock to be incremented by time $d
                  > 0$. Whenever an event occurs at process $i$, the
                  $i^{th}$ position of the system time vector is
                  incremented by $d$. Thus, the clock of a given
                  event, $C(e)$ is a vector consisting of the vector
                  time when event $e$ occurs. In a similar fashion,
                  time stamps are $N \times 1$ vectors in vector
                  time. The following definitions apply for any two
                  time vectors $u$ and $v$: \[ u \leq v iff \forall i:
                  u[i] \leq v[i] \\ u < v iff u \leq v & u \neq v \\ u
                  || v iff \not(u < v) & \not (v < u) \] The above
                  definition allows $\sup$ to serve as a convenient
                  operator on time vectors. The passing of time stamps
                  with messages facilitates a process, $P_i$, updating
                  its local clock by the simple operation of $C_i =
                  sup(C_i, t)$ for time stamp $t$. A cut, $X$, is
                  consistent iff $t_X = (C(c_1)[1], ..., C(c_n)[n])$
                  for cut events $c_i$. I am not convinced that
                  virtual time is insufficient. Mattern did not make
                  this clear with his debugging example.}
}

@Article{matthews:partial,
  author =	 {S. G. Matthews},
  title =	 {An Extensional Treatment of Lazy Data Flow Networks},
  journal =	 {Theoretical Computer Science},
  year =	 1993,
  series =	 {Workshop on Topology and Completion in Semantics},
  volume =	 151,
  number =	 1,
  month =	 nov,
  pages =	 {195 - 205}
}

@InProceedings{mcilroy68softwareComponents,
  author =	 {M. D. McIlroy},
  title =	 {Mass-Produced Software Components},
  booktitle =	 {Nato Science Committee Meeting at Garmisch, Germany},
  year =	 1969,
  month =	 oct,
  annote =	 {The article that formed the basis for
                  component-based software design.}
}

@TechReport{melo95reuseImpact,
  author =	 {Walcelio Melo and Lionel Briand and Victor Basili},
  title =	 {Measuring the Impact of Reuse on Software Quality
                  and Productivity},
  institution =	 {University of Maryland},
  year =	 1995,
  number =	 {CS-TR-3395},
  address =	 {College Park MD, USA 20742},
  month =	 jan
}

@Book{milner89csp,
  author =	 {Robin Milner},
  title =	 {Communication and Concurrency},
  publisher =	 PH,
  year =	 1989,
  editor =	 {C.A.R. Hoare},
  series =	 {International Series in Computer Science},
  address =	 {London}
}

@InProceedings{milner99difference,
  author =	 {Robin Milner},
  title =	 {Computing and Communication - What's the
                  Difference?},
  booktitle =	 {Symposium in Celebration of the Work of
                  C.A.R. Hoare},
  year =	 1999
}

@InProceedings{minas,
  author =	 {Mark Minas},
  title =	 {Detecting Quantified Global Predicates in Parallel
                  Programs},
  booktitle =	 {First International EURO-PAR Conference},
  number =	 966,
  series =	 LNCS,
  year =	 1995,
  publisher =	 SPRINGER,
  month =	 aug,
  pages =	 {403-414}
}

@InProceedings{mitchell83coercion,
  author =	 {John C. Mitchell},
  title =	 {Coercion and Type Inference},
  booktitle =	 POPL,
  year =	 1984,
  month =	 jan,
  organization = ACM
}

@Book{moschovakis94set,
  author =	 {Yiannis N. Moschovakis},
  title =	 {Notes on Set Theory},
  publisher =	 SPRINGER,
  year =	 1994,
  annote =	 {This is a very readable and comprehensive book. It
                  includes a chapter on fixed points and deals
                  extensively with the Axiom of Choice and Zermelo's
                  other axioms.}
}

@Book{mowbray97corba,
  author =	 {Thomas J. Mowbray and Raphael C. Malveau},
  title =	 {CORBA: Design Patterns},
  publisher =	 {Wiley Computer Publishing},
  year =	 1997,
  address =	 {New York}
}

@Book{muchnick97optimization,
  author =	 {Steven Muchnick},
  title =	 {Advanced Compiler Design and Implementation},
  publisher =	 MK,
  year =	 1997
}

@InProceedings{murthy01systemCanvas,
  author =	 {Praveen K. Murthy and Etan G. Cohen and Steve
                  Rowland},
  title =	 {{System Canvas}: A new design environment for
                  embedded {DSP} and telecommunication systems},
  booktitle =	 CODES,
  year =	 2001,
  month =	 apr,
  organization = {SIGDA},
  publisher =	 ACM
}

@PhdThesis{murthy96mdsdf,
  author =	 {Praveen K. Murthy},
  title =	 {Scheduling Techniques for Synchronous and
                  Multidimensional Sychronous Dataflow},
  school =	 EECS,
  year =	 1996
}

@InProceedings{muthig02genericComponents,
  author =	 {Dirk Muthig and Thomas Patzke},
  title =	 {Generic Implementation of Product Line Components},
  booktitle =	 {NetObjectDays},
  pages =	 {313--329},
  year =	 2002,
  number =	 2591,
  series =	 LNCS,
  month =	 oct,
  publisher =	 SPRINGER
}

@Article{nicollin94atp,
  author =	 {Xavier Nicollin and Joseph Sifakis},
  title =	 {The Algebra of Timed Process, {ATP}: Theory and
                  Application},
  journal =	 {Information and Computation},
  year =	 1994,
  volume =	 114,
  pages =	 {131-178},
  annote =	 {Nicollin and Sifakis present a general framework for
                  introducing time to description languages and then
                  describe a specific language, ATP, which is a
                  process algebra of timed processes. ATP uses a
                  discrete, global time. They begin by considering two
                  {\em extremes} for specifying time. Asychronous
                  models (\'{a} la CSP, CCS, ADA and Petri Nets) are
                  the first of the two extremes and they all adopt
                  asychronous parallel composition rules. A second
                  approach comes from sychronous models in which
                  global actions are the result of simultaneous
                  actions in each of the components; components
                  proceed at the same speed. Two approaches are cited
                  for defining approaches that are not strictly
                  asynchronous or synchronous. The first approach
                  consists of constraining different types of
                  computations in asynchronous models. The second
                  approach uses a global parameter for representing
                  time to constrain the occurence of actions. Although
                  they do not state it explicitly, the approach of ATP
                  appears to be closest to the global time parameter
                  method. ATP observes the following principles: 1) A
                  timed system is the parallel composition of
                  communicating sequential processes. Processes can
                  perform either of two types of actions. time actions
                  (or synchronous actions) and non-time actions (or
                  asynchronous actions). 2) Time progresses by
                  execution of synchronous actions. 3) Execution
                  proceeds in steps (the period between two
                  consecutive synchronous actions). Within a step, an
                  finite though arbitrarily long sequence of
                  asynchronous actions may take place. A two-phased
                  approach is used such that when all components have
                  completed all possible asynchronous actions within a
                  step, the components simultaneously perform a
                  synchronous action. Nicollin and Sifakis do a good
                  job of reviewing alternative methods for adding time
                  to process algebras.}
}

@Article{ommerling00koala,
  author =	 {Rob van Ommerling},
  title =	 {The {Koala} component model for consumer electronics
                  software},
  journal =	 COMPUTER,
  year =	 2000,
  volume =	 33,
  number =	 3,
  pages =	 {78--85},
  month =	 mar,
  annotate =	 "Koala is capable of doing some simple partial
                  evaluation of component parameters, which are
                  assumed to be constant."
}

@inproceedings{palsberg01analysis,
  author =	 "Jens Palsberg",
  title =	 "Type-based analysis and Application",
  booktitle =	 {Proc. Workshop on Program Analysis for Software
                  Tools and Engineering (PASTE)},
  month =	 jun,
  year =	 2001
}

@PHDTHESIS(parks95dynamicdataflow,
  author =	 "T. M. Parks",
  title =	 "Bounded Scheduling of Process Networks",
  school =	 EECS,
  year =	 "1995"
)

@InProceedings{passerone01scheduleGraph,
  author =	 {Claudio Passerone and Yosinori Watanabe and Luciano
                  Lavagno},
  title =	 {Generation of Minimal Size Code for Schedule Graphs},
  booktitle =	 DATE,
  year =	 2001,
  month =	 mar,
  organization = {SIGDA},
  publisher =	 ACM
}

@InProceedings{pino95hierarchicalScheduling,
  author =	 {Jose Luis Pino and Shuvra S. Bhattacharyya and
                  Edward A. Lee},
  title =	 {A Hierarchical Multiprocessor Scheduling System for
                  DSP Applications},
  booktitle =	 ASILOMAR,
  year =	 1995,
  month =	 oct
}

@Article{pino95synthesis,
  author =	 {Jose Luis Pino and Soonhoi Ha and Edward A. Lee and
                  Joseph T. Buck},
  title =	 "Software Synthesis for {DSP} Using {Ptolemy}",
  journal =	 {Journal on VLSI Signal Processing},
  year =	 1995,
  volume =	 9,
  number =	 1,
  pages =	 {7--21},
  month =	 jan
}

@TechReport{qian00boundscheck,
  author =	 "Feng Qian and Laurie Hendren and Clark Verbrugge",
  title =	 "A comprehensive approach to array bounds check
                  elimination for {Java}",
  institution =	 {McGill University},
  year =	 2000,
  type =	 {Sable Technical Report},
  number =	 {2000-4}
}

@TechReport{reekie99software,
  author =	 {John Reekie and Steve Neuendorffer and Christopher
                  Hylands and Edward Lee},
  title =	 {Software Practice in the {Ptolemy} Project},
  institution =	 {Gigascale Silicon Research Center},
  year =	 1999,
  number =	 {GSRC-TR-1999-01},
  address =	 UCB,
  month =	 apr,
}

@InProceedings{rehof96constraints,
  author =	 {Jakob Rehof and Torben Mogensen},
  title =	 {Tractable Constraints in Finite Semilattices},
  booktitle =	 SAS,
  pages =	 {285--300},
  year =	 1996,
  number =	 1145,
  series =	 LNCS,
  month =	 sep,
  publisher =	 SPRINGER
}

@Article{rehof99constraints,
  author = 	 {Jakob Rehof and Torben Mogensen},
  title = 	 {Tractable Constraints in Finite Semilattices},
  journal = 	 SCP,
  year = 	 1999,
  volume =	 35,
  number =	 2,
  pages =	 {191-221}
}

@InProceedings{rowson97interfaces,
  author =	 {James A. Rowson and Alberto Sangiovanni-Vincentelli},
  title =	 {Interface-Based Design},
  booktitle =	 DAC,
  year =	 1997,
  publisher =	 ACM,
  month =	 jun,
  pages =	 {178-183},
  annote =	 {This article has a really good key idea. It says
                  that the {\em behavior} and {\em communication} of a
                  component should be separated in the design
                  process. I am not previously aware of this concept
                  being dealt with as explicitly as Rowson and
                  Sangiovanni do. It is a precursor to the domain
                  polymorphism found in Ptolemy II. In some ways, the
                  idea of interface-based design is quite
                  simple. Perhaps it is true that the simplest ideas
                  are the most powerful. The idea of interface-based
                  works as follows: the communication semantics of a
                  component are separated from the behavior (or
                  function) of the component. To explain this concept,
                  they touch on models of computation and speak of how
                  telecommunications engineers have represented
                  communication through protocol stacks. I felt that
                  the paper falls short when the authors speak of
                  incremental refinement of a model of
                  computation. They apply incremental refinement
                  specifically to the communication semantics of a
                  system. As an example, they show how the design of
                  an ATM switch can undergo successive refinement of
                  its communication protocol; first ATM packets are
                  viewed monolithically. The the 53 bytes of data in
                  the packets are brought into view. Incremental
                  refinement is a useful idea and is common in the
                  formal verification communication. Nevertheless, it
                  clutters up the discussion of interface-based
                  design. While it is true that it serves as a good
                  example of how interface-based design, Rowson and
                  Sangiovanni's presentation suggests that
                  interface-based design and incremental refinement
                  are tightly coupled. This is not the case.}
}

@PhdThesis{sanvido02HIL,
  author =	 {Marco A. A. Sanvido},
  title =	 {Hardware-in-the-loop Simulation Framework},
  school =	 {ETH Zurich},
  year =	 2002,
  month =	 mar
}

@InProceedings{scharli01wrappers,
  author =	 {Nathanael Sch�rli and Franz Achermann},
  title =	 {Partial evaluation of inter-language wrappers},
  booktitle =	 {Workshop on Composition Languages (WCL)},
  year =	 2001,
  month =	 sep,
  annotate =	 "Describes how some parts of a Piccola composition
                  can be removed."
}

@article{schmidt01adaptive,
  author =	 "Douglas C. Schmidt and Richard E. Schantz and
                  Michael W. Masters and Joseph K. Cross and David
                  C. Sharp and Louis P. DiPalma",
  title =	 "Towards Adaptive and Reflective Middleware For
                  Network-Centric Combat Systems",
  journal =	 "Crosstalk",
  month =	 nov,
  year =	 2001
}

@Book{schmidt86denotational,
  author =	 {David A. Schmidt},
  title =	 {Denotational Semantics: A Methodology for Language
                  Development},
  publisher =	 {Allyn and Bacon},
  year =	 1986,
  address =	 {Newton, Massachusetts},
  annote =	 {Very comprehensive presentation but not at the
                  expense of readability. The notation is leaves a bit
                  to be desired though.}
}

@inproceedings{schultz00partialEvaluation,
  author =	 "Ulrik Schultz",
  booktitle =	 "Proceedings of Symposium on Programs as Data Objects
                  (PADO)",
  title =	 "Partial Evaluation for Class-Based Object-Oriented
                  Languages",
  series =	 LNCS,
  number =	 2053,
  publisher =	 SPRINGER,
  month =	 may,
  year =	 2001
}

@Article{schultz03javaSpecialization,
  author =	 {Ulrik P. Shultz and Julia L. Lawall and Charles
                  Consel},
  title =	 {Automatic Program Specialization for {Java}},
  journal =	 toplas,
  year =	 2003,
  volume =	 25,
  number =	 4,
  pages =	 {452--499},
  month =	 jul
}

@inproceedings{schultz99specialization,
  author =	 "Ulrik Pagh Schultz and Julia L. Lawall and Charles
                  Consel and Gilles Muller",
  booktitle =	 ECOOP,
  title =	 "Towards Automatic Specialization of {Java} Programs",
  series =	 LNCS,
  number =	 1628,
  publisher =	 SPRINGER,
  pages =	 "367--390",
  month =	 jun,
  year =	 1999
}

@Book{sebesta96programming,
  author =	 {Robert W. Sebesta},
  title =	 {Concepts of Programming Languages},
  publisher =	 AW,
  year =	 1996,
  edition =	 {3rd Edition}
}

@InProceedings{sharp99variability,
  author =	 {David C. Sharp},
  title =	 {Exploiting Object Technology to Support Product
                  Variability},
  booktitle =	 {Proceedings of the Digital Avionics Systems
                  Conference},
  year =	 1999,
  publisher =	 IEEE
}

@article{stewart97pbo,
  author =	 {D. B. Stewart and R. A. Volpe and P. K. Khosla},
  title =	 {Design of dynamically reconfigurable real-time
                  software using port-based objects},
  journal =	 {IEEE Trans. on Software Engineering},
  volume =	 23,
  number =	 12,
  month =	 dec,
  year =	 1997,
  pages =	 {759--776}
}

@Article{strehl01funstate,
  author =	 {K. Strehl and L. Thiele and M. Gries and
                  D. Ziegenbein and R. Ernst and J. Teich},
  title =	 {{FunState} - an internal design representation for
                  codesign},
  journal =	 IEEETVLSI,
  year =	 2001,
  volume =	 9,
  number =	 4,
  pages =	 {524--544},
  month =	 aug
}

@inproceedings{sundaresan00methodResolution,
  author =	 "Vijay Sundaresan and Laurie J. Hendren and Chrislain
                  Razafimahefa and Raja Vallee-Rai and Patrick Lam and
                  Etienne Gagnon and Charles Godin",
  title =	 "Practical virtual method call resolution for {Java}",
  booktitle =	 OOPSLA,
  pages =	 "264--280",
  year =	 "2000",
  url =		 "www.sable.mcgill.ca/publications"
}

@MastersThesis{sundaresan99methodResolution,
  author =	 {Vijay Sundaresan},
  title =	 "Practical Techniques for Virtual Call Resulution in
                  {Java}",
  school =	 {McGill University},
  year =	 1999,
  address =	 {Montreal, Canada},
  url =		 "www.sable.mcgill.ca/publications"
}

@TechReport{swan01systemc,
  author =	 {Stuart Swan},
  title =	 {An Introduction to System Level Modeling in
                  {SystemC} 2.0},
  institution =	 {Open {SystemC} Initiative},
  year =	 2001,
  month =	 may
}

@Manual{synopsis02RTLSystemC,
  title =	 {Describing Synthesizable {RTL} in {SystemC}},
  organization = {Synopsys},
  month =	 jan,
  year =	 2002,
  note =	 {Available at http://www.synopsys.com}
}

@Article{sztipanovits:selfadaptive,
  author =	 {Janos Sztipanovits and Gabor Karsai and Ted Bapty},
  title =	 {Self-Adaptive Software For Signal Processing},
  journal =	 CACM,
  year =	 1998,
  volume =	 41,
  number =	 5,
  month =	 may,
  pages =	 {66-73},
  annote =	 {This article essentially talks about mutable
                  systems. The authors refer to mutable systems as
                  "structurally adaptive systems" (SAS) and focus
                  specifically on digital signal processing SAS's. The
                  motivating example used is the analysis of a turbine
                  engine. These large engines are tested in real
                  time. Approximately 300 sensors are used to draw
                  information from the engine while it operates during
                  testing. Unfortunately, the sensors have low
                  durability and hence, the number of sensors
                  diminishes rapidly during the testing. The result is
                  that the topology of the sensors can not be
                  ascertained a priori and thus, the algorithms must
                  depend on a dynamic topology. }
}

@InProceedings{teich99dse,
  author =	 {Jurgen Teich and E. Zitzler and Shuvra
                  Bhattacharyya},
  title =	 {{3D} Exploration of Software Schedules for {DSP}
                  Algorithms},
  booktitle =	 CODES,
  year =	 1999,
  month =	 may,
  organization = {SIGDA},
  publisher =	 ACM
}

@Book{tennent91semantics,
  author =	 {R. D. Tennent},
  title =	 {Semantics of Programming Languages},
  publisher =	 PH,
  year =	 1991,
  address =	 {London},
  annote =	 {This book provides a clear overview of Domain Theory
                  (or Scott's Theory of Computation) in Chapter 5. It
                  covers the high level principles of domain
                  theory. The first being that a necessary condition
                  for the computability of an infinitary object is
                  that it be the limit of a sequence of finitary
                  approximations. The second principle is that
                  computable functions on domains preserve domain
                  structure.}
}

@TechReport{tip99jax,
  author =	 {Frank Tip and Chris Laffra and Peter F. Sweeney and
                  David Streeter},
  title =	 {Practical Experience with an Application Extractor
                  for {Java}},
  institution =	 {IBM Research},
  year =	 1999,
  number =	 {21451(96813)},
  month =	 oct
}

@Article{tomlin98airTraffic,
  author =	 {Claire Tomlin and George J. Pappas and Shankar
                  Sastry},
  title =	 {Conflict Resolution for Air Traffic Management: {A}
                  Study in Multiagent Hybrid Systems},
  journal =	 {IEEE Transactions on Automatic Control},
  year =	 1998,
  volume =	 43,
  number =	 4,
  month =	 apr,
  pages =	 {509-521}
}

@PhdThesis{tomlin98thesis,
  author =	 "C. Tomlin",
  title =	 "Hybrid Control of Air Traffic Management Systems",
  school =	 EECS,
  year =	 1998
}

@INPROCEEDINGS(tsay00codegen,
  author =	 "Jeff Tsay and Christopher Hylands and Edward Lee",
  title =	 "A Code Generation Framework for {Java}
                  component-based designs",
  pages =	 "18--25",
  booktitle =	CASES,
  year =	 2000,
  address =	 "ACM",
  month =	 nov
)

@inproceedings{valleerai00optimizing,
  author =	 "Raja Vallee-Rai and Etienne Gagnon and Laurie
                  J. Hendren and Patrick Lam and Patrice Pominville
                  and Vijay Sundaresan",
  title =	 "Optimizing {Java} Bytecode Using the {Soot}
                  Framework: Is It Feasible?",
  booktitle =	 "Computational Complexity",
  pages =	 "18--34",
  year =	 2000,
  url =		 "www.sable.mcgill.ca/publications"
}

@inproceedings{valleerai99soot,
  author =	 "Raja Vallee-Rai and others",
  title =	 "{Soot} - a {Java} Optimization Framework",
  booktitle =	 "Proceedings of CASCON",
  pages =	 "125--135",
  year =	 1999,
  url =		 {http://www.sable.mcgill.ca/publications}
}

@Article{vuillemin74recursion,
  author =	 {Jean Vuillemin},
  title =	 {Correct and Optimal Implementations of Recursion In
                  a Simple Programming Language},
  journal =	 {Journal of Computer and System Sciences},
  year =	 1974,
  volume =	 9,
  number =	 3,
  month =	 dec,
  pages =	 {332-354}
}

@InProceedings{wadler89polymorphism,
  author =	 {Philip Wadler and Stephen Blott},
  title =	 {How to make ad-hoc polymorphism less ad hoc},
  booktitle =	 POPL,
  year =	 1989,
  month =	 jan,
  organization = ACM,
  annote =	 "A description of the type class mechanism in
                  Haskell, especially in relation to Hindley/Milner
                  type inference."
}

@InProceedings{wan00frp,
  author =	 "Z. Wan and Paul Hudak",
  title =	 "Functional Reactive Programming from First
                  Principles",
  pages =	 "",
  booktitle =	 PLDI,
  year =	 2000,
  address =	 "ACM"
}

@inproceedings{webb99process,
  author =	 "Darren Webb and Andrew Wendelborn and Kevin
                  Maciunas",
  title =	 "Process Networks as a High-Level Notation for
                  Metacomputing",
  booktitle =	 "Proc. of the Int. Parallel Programming Symposium
                  ({IPPS}), Workshop on Java for Distributed
                  Computing",
  year =	 "1999"
}

@TechReport{wernli02cal,
  author =	 {Lars Wernli},
  title =	 {Design and implementation of a code generator for
                  the {CAL} actor language},
  type =	 MEMO,
  institution =	 ERL,
  number =	 {UCB/ERL M02/5},
  year =	 2002,
  address =	 UCB,
  month =	 mar
}

@Book{wexler89occam,
  author =	 {John Wexler},
  title =	 {Concurrent Programming in Occam 2},
  publisher =	 {Ellis Horwood Series in Computers and Their
                  Applications},
  year =	 1989,
  address =	 {England},
  annote =	 { This book gives an overview of Occam, the
                  programming language that is based on Tony Hoare's
                  CSP. The book serves as an introduction to the
                  semantics and syntax of Occam. My particular
                  interest was in the semantics of concurrency found
                  in Occam. In Occam, processes run concurrently by
                  one of two mechanisms. The {\em PAR} keyword
                  specifies that $N$ processes execute in
                  parallel. The {\em PRI PAR} keyword specifies that
                  $N$ processes execute in a prioritized parallel
                  fashion. In this latter case, the processes are
                  totally ordered according to priority. A process in
                  a PRI PAR will only run if all the processes with a
                  higher priority are blocked or terminated. PRI PAR
                  maintains determinism if it is applied to a network
                  of PN processes. However, if it is applied to the
                  interface of a composition of PN processes and
                  priorities are assigned to the ports of the
                  composite's interface, then determinism will be
                  violated. Note that Occam is named after ``Occam's
                  Razor.'' Occam's Razor was propounded by the English
                  philosopher, William of Occam (1300-1349) and is as
                  follows: \[ Entia non sunt multiplicanda praeter
                  necessitatem. \] The latin is translated to
                  ``Entities should not be multiplied more than
                  necessary.'' That is, the fewer assumptions an
                  explanation of a phenomenon depends on, the better
                  it is. The negation of Occam's Razor would suggest
                  that an arbitrarily complex explanation is just as
                  good as the simplest one.}
}

@PhdThesis{williamson98synthesis,
  author =	 {Michael Williamson},
  title =	 {Synthesis of Parallel Hardware Implementations from
                  Synchronous Dataflow Graph Specifications},
  school =	 EECS,
  year =	 1998
}

@InProceedings{wills00OCP,
  author =	 "L. Wills and S. Kannan and B. Heck and
                  G. Vachtsevanos and C. Restrepo and S. Sander and
                  D. Schrage and J. Prasad",
  title =	 "An open software infrastructure for reconfigurable
                  control systems",
  booktitle =	 "Proc. 19th Amer. Control Conf. (ACC-2000)",
  year =	 2000,
  month =	 jun,
  pages =	 "2799--2803"
}

@Book{winskel94semantics,
  author =	 {Glynn Winskel},
  title =	 {The Formal Semantics of Programming Languages: An
                  Introduction},
  publisher =	 MIT,
  year =	 1994,
  series =	 {Foundations of Computing},
  address =	 {Cambridge}
}

@InProceedings{winter02pecos,
  author =	 {Michael Winter and others},
  title =	 {Components for Embedded Software : The {PECOS}
                  Approach},
  booktitle =	 {Workshop on Composition Languages, In conjunction
                  with the European Conference on Object-Oriented
                  Programming (ECOOP)},
  year =	 2002,
  month =	 jun
}

@InProceedings{wolf99spade,
  author =	 {Pieter van der Wolf and Paul Lieverse and Mudit Goel
                  and David La Hei and Kees Vissers},
  title =	 {An {MPEG-2} Decoder Case Study as a Driver for a
                  System Level Design Methodology},
  booktitle =	 CODES,
  year =	 1999,
  month =	 may,
  organization = {SIGDA},
  publisher =	 ACM
}

@InProceedings{xiong00types,
  author =	 {Yuhong Xiong and Edward Lee},
  title =	 {An Extensible Type System for Component-based
                  Design},
  booktitle =	 {Proceedings of 6th International Conference on Tools
                  and Algorithms for the Construction and Analysis of
                  Systems},
  year =	 2000,
  number =	 1785,
  series =	 LNCS,
  month =	 mar,
  publisher =	 SPRINGER
}

@PHDTHESIS{xiong02types,
  author =	 "Yuhong Xiong",
  title =	 "An Extensible Type System for Component-Based
                  Design",
  school =	 EECS,
  year =	 "2002"
}

@InProceedings{yates93networks,
  author =	 {Robert Kim Yates},
  title =	 {Networks Of Real-Time Processes},
  booktitle =	 {Proceedings of the International Conference on Concurrency Theory (CONCUR)},
  number =       715,
  series =	 LNCS,
  year =	 1993,
  pages =	 {384-397},
  publisher =	 SPRINGER
}

@InProceedings{zhu01metaRTL,
  author =	 {Jianwen Zhu},
  title =	 {{MetaRTL}: Raising the abstraction level of {RTL}
                  design},
  booktitle =	 DATE,
  year =	 2001,
  month =	 mar,
  organization = {SIGDA},
  publisher =	 ACM
}

@Book{composition03abmann,
  author =	 {Uwe A\ss{}mann},
  title = 	 {Invasive Software Composition},
  publisher = 	 SPRINGER,
  year = 	 2003,
  month =	 may
}

@ARTICLE(adelantado94estereltasks,
  author =	 "M. Adelantado and F. Boniol",
  title =	 "Controlling real--time asynchronous tasks with
                  {Esterel} synchronous language",
  journal =	 "Principles of Distributed Computing",
  year =	 "1994",
  pages =	 "387",
  publisher =	 "ACM"
)

@ARTICLE(benveniste91synchronous,
  author =	 "Albert Benveniste and Gerard Berry",
  title =	 "The Synchronous Approach to Reactive and RealTime
                  Systems",
  journal =	 "Proceedings of the IEEE",
  year =	 "1991",
  volume =	 "79",
  number =	 "9",
  pages =	 "1270--1282",
  month =	 sep
)

@ARTICLE(berry92esterel,
  author =	 "G. Berry and G. Gonthier",
  title =	 "The {Esterel} Synchronous Programming Language:
                  Design, Semantics, Implementation",
  journal =	 SCP,
  year =	 "1992",
  volume =	 "19",
  number =	 "2",
  pages =	 "87--152"
)

@ARTICLE{bilsen96cyclostatic,
  author =	 "G. Bilsen and M. Engels and R. Lauwereins and
                  J. Peperstraete",
  title =	 "Cyclo-Static Dataflow",
  journal =	 "IEEE Transactions on Signal Processing",
  year =	 1996,
  volume =	 44,
  number =	 2,
  pages =	 "397--408"
}

@ARTICLE(brinksma87lotos,
  author =	 "Ed Brinksma and Tommaso Bolognesi",
  title =	 "Introduction to the {ISO} Specification Language
                  {LOTOS}",
  journal =	 "Computer Networks and ISDN Systems",
  year =	 "1987",
  volume =	 "14",
  number =	 "1"
)

@InProceedings(gauthier87signal,
  author =	 "T. Gauthier and P. le Guernic and L. Besnard",
  title =	 "{Signal}, a declarative language for synchronous
                  programming of real-time systems",
  booktitle =	 "Proceedings of the Conference on Functional
                  Programming Languages and Computer Architecture",
  series =	 LNCS,
  volume =	 274,
  year =	 1987,
  publisher =	 SPRINGER
)

@ARTICLE(halbwachs91lustre,
  author =	 "N. Halbwachs and P. Caspi and P. Raymond and
                  D. Pilaud",
  title =	 "The synchronous data flow programming language
                  {Lustre}",
  journal =	 "Proceedings of the IEEE",
  year =	 "1991",
  volume =	 "79",
  number =	 "9",
  pages =	 "1305--1321",
  month =	 sep,
)

@ARTICLE(harel87statecharts,
  author =	 "D. Harel",
  title =	 "Statecharts: A visual formalism for complex systems",
  journal =	 SCP,
  year =	 1987,
  volume =	 8,
  pages =	 "231--274"
)

@ARTICLE(harel96statemate,
  author =	 "D. Harel and A. Naamad",
  title =	 "The {STATEMATE} Semantics of {Statecharts}",
  journal =	 "ACM Transactions on software engineering and
                  methodology",
  year =	 "1996",
  volume =	 {5},
  number =	 {4},
)

@ARTICLE(hoare78csp,
  author =	 {C. A. R. Hoare},
  title =	 {A theory of {CSP}},
  journal =	 CACM,
  year =	 1978,
  volume =	 21,
  number =	 8,
  month =	 aug
)

@ARTICLE(hoare84csp,
  author =	 {S. Brookes and C. A. R. Hoare and A. Roscoe},
  title =	 {A theory of {CSP}},
  journal =	 {Journal of the ACM},
  year =	 {1984},
  volume =	 {31},
  number =	 {3},
  pages =	 {560--599}
)

@Inproceedings(richard92esterelprocesses,
  author =	 "M. Richard and O. Roux",
  title =	 "An attempt to confront asynchronous reality to
                  synchronous modelization in the {Esterel} language",
  booktitle =	 "Formal Techniques in Real-Time and Fault-Tolerant
                  Systems (FTRT)",
  series =       LNCS,
  number =       571,
  year =	 1992,
  pages =	 "429--450",
  publisher =	 SPRINGER
)

@BOOK(balarin97polis,
  author =	 "Felice Balarin",
  title =	 "Hardware-Software Co-Design of Embedded Systems, The
                  POLIS Approach",
  publisher =	 KLUWER,
  year =	 1997
)

@BOOK(booch98jacobsen,
  author =	 "G. Booch and J. Rumbaugh and I. Jacobsen",
  title =	 "The Unified Modeling Language User Guide",
  publisher =	 AW,
  year =	 1998
)

@BOOK(hoare85csp,
  author =	 "C. A. R. Hoare",
  title =	 "Communicating sequential processes.",
  publisher =	 PH,
  year =	 "1985",
  series =	 "Computer Science"
)

@BOOK(ibm92systemview,
  author =	 "IBM Corporation",
  title =	 "IBM SAA: SystemView concepts, SC23-0578. ISO/IEC
                  JTC1/SC21 WD7 (N309-N315), Drafts of standard
                  documents on Open Distributed Processing",
  publisher =	 AW,
  year =	 "1992"
)

@incollection(milner80ccs,
  author =	 "Robin Milner",
  title =	 "A Calculus for Communicating Systems",
  publisher =	 SPRINGER,
  year =	 1980,
  series =	 LNCS,
  number =	 92,
)

@BOOK(navabi93vhdl,
  author =	 "Z. Navabi",
  title =	 {VHDL Analysis and Modeling of Digital Systems},
  publisher =	 "McGraw Hill, Inc.",
  year =	 "1993"
)

@BOOK(thomas91verilog,
  author =	 "D. E. Thomas and Philip Moorby",
  title =	 "The Verilog Hardware Description Language",
  publisher =	 KLUWER,
  year =	 1991
)

@INPROCEEDINGS(buck00elgreco,
  author =	 "Joseph Buck and Radhu Vaidyanathan",
  title =	 "Heterogeneous modeling and simulation of embedded
                  systems in {El Greco}",
  booktitle =	 CODES,
  year =	 "2000",
  month =	 may
)

@INPROCEEDINGS(chou98modalprocesses,
  author =	 "P. Chou and G. Borriello",
  title =	 "Modal processes: Towards enhanced retargetability
                  through control composition of distributed embedded
                  systems",
  booktitle =	 DAC,
  year =	 1998,
  month =	 jun
)

@INPROCEEDINGS(doboli98definition,
  author =	 "A. Doboli and R. Vemuri",
  title =	 "The Definition of a {VHDL-AMS} Subset for Behavioral
                  Synthesis of Analog Systems",
  booktitle =	 "Proc. of {IEEE/VIUF BMAS}",
  year =	 "1998"
)

@INPROCEEDINGS(grotker97pcc,
  author =	 "T. Grotker and R. Schoenen and H. Meyr",
  title =	 "Pcc: A modeling technique for mixed control/data
                  flow systems",
  booktitle =	 "Proc. of the European Design and Test Conference
                  (ED\&TC)",
  year =	 "1997"
)

@INPROCEEDINGS(herlihy98unifying,
  author =	 "M. Herlihy and S. Rajsbaum and M. Tuttle",
  title =	 "Unifying synchronous and asynchronous
                  message-passing models",
  booktitle =	 "Proceedings 17th ACM Symposium on Principles of
                  Distributed Computing",
  year =	 "1998",
  pages =	 "133--142"
)

@INPROCEEDINGS(jourdan94multiparadigm,
  author =	 "M. Jourdan and F. Lagnier and F. Maraninchi and
                  P. Raymond",
  title =	 "A multiparadigm language for reactive systems",
  booktitle =	 "Proc. of the IEEE Int. Conf. on Computer Languages,
                  (ICCL)",
  year =	 "1994",
  month =	 may
)

@INPROCEEDINGS(kunkel91cossap,
  author =	 "J. Kunkel",
  title =	 "{COSSAP}: A Stream driven simulator",
  booktitle =	 "IEEE Int. Workshop Microelectrion. Commun.",
  year =	 "1991",
  month =	 mar
)

@INPROCEEDINGS(maraninchi91argos,
  author =	 "F. Maraninchi",
  title =	 "The {Argos} language: Graphical representation of
                  automata and description of reactive systems",
  booktitle =	 "IEEE Workshop on Visual Languages",
  year =	 1991,
  month =	 oct
)

@INPROCEEDINGS(pelz96softwarecosimulation,
  author =	 "G. Pelz and J. Bielefeld and G. Hess and G. Zimmer",
  title =	 "Software-Cosimulation for Mechatronic System Design",
  booktitle =	 "Proceedings of the {EURO-DAC} `96 with {EURO-VHDL}
                  `96",
  year =	 1996,
  address =	 "Geneva, Switzerland.",
  month =	 sep
)

@PhdThesis{willink01fog,
  author = 	 {Edward D. Willink},
  title = 	 {Meta-Compilation for C++},
  school = 	 {University of Surrey},
  year = 	 2001,
  month =	 jun
}

@article{cole03dynamicCompilation,
  author =    "M. Cole and S. Parker",
  journal =   "Scientific Programming",
    pages =     "321--327",
  publisher = "IOS Press",
  title =     "Dynamic Compilation of {C++} Template Code",
  volume =    11,
  year =      2003,
}

@InProceedings{veldhuizen99templates,
  author = 	 {Todd Veldhuizen},
  title = 	 {\href{http://osl.iu.edu/~tveldhui/papers/pepm99.ps}{C++ Templates as Partial Evaluation}},
  booktitle =	 {Workshop on Partial Evaluation and Semantics-Based Program Manipulation (PEPM)},
  year =	 1999,
  URL = {http://osl.iu.edu/~tveldhui/papers/pepm99.ps}
}

@Article{clausen97sideEffect,
  author = 	 {Lars R. Clausen},
  title = 	 {A {Java} Bytecode Optimizer Using Side-effect Analysis},
  journal = 	 {Concurrency: Practice and Experience},
  year = 	 1997,
  volume =	 9,
  number =	 11,
  pages =	 {1031--1045},
  month =	 nov
}

@InProceedings{kamin03jumbo,
  author = 	 {Sam Kamin and Lars Clausen and Ava Jarvis},
  title = 	 {Jumbo: Run-Time Code Generation for {Java} and Its Applications},
  booktitle =	 {International Symposium on Code Generation and Optimization (CGO)},
  pages =	 {48--58},
  year =	 2003,
  month =	 mar,
  organization = IEEE
}

@Article{kamin04generativeComponents,
  author = 	 {Samuel Kamin and Miranda Callahan and Lars Clausen.},
  title = 	 {Generative Binary Components},
  journal = 	 {Journal of Functional Programming},
  year = 	 {to appear}
}

@InProceedings{neuendorffer04reconfiguration,
  author = 	 {Stephen Neuendorffer and Edward A. Lee},
  title = 	 "Hierarchical Reconfiguration of Dataflow Models",
  booktitle =    MEMOCODE,
  year = 	 2004,
  month =        jun
}

@InCollection{lee04codesign,
  author =	 {Edward A. Lee and Stephen Neuendorffer},
  editor =	 {Sandeep Shukla and Jean-Pierre Talpin},
  booktitle = 	 "Formal Methods and Models for System Design: a system level perspective",
  title = 	 "Actor-oriented models for codesign: balancing re-use and performance",
  publisher = 	 KLUWER,
  year = 	 2004,
  pages = {33--56}
}

@Article{kohler00click,
  author = 	 {Eddie Kohler and Robert Morris and Benjie Chen and John Jannotti and M. Frans Kaashoek},
  title = 	 {The {Click} modular router},
  journal = 	 {ACM Transactions on Computer Systems},
  year = 	 2000,
  volume =	 18,
  number =	 3,
  month =	 aug
}

@PhdThesis{kohler00clickThesis,
  author = 	 {Eddie Kohler},
  title = 	 {The {Click} modular router},
  school = 	 {Massachusetts Institute of Technology},
  month =        nov,
  year = 	 2000
}

@InProceedings{kohler02clickOptimization,
  author = 	 {Eddie Kohler and Robert Morris and Benjie Chen},
  title = 	 {Programming language optimizations for modular router configurations},
  booktitle =	 ASPLOS,
  pages =	 {251--263},
  year =	 2002,
  month =	 oct
}

@InProceedings{hill00tinyOS,
  author = 	 {Jason Hill and Robert Szewczyk and Alec Woo and Seth Hollar and David Culler and Kristofer Pister},
  title = 	 {System architecture directions for network sensors},
  booktitle =	 ASPLOS,
  year =	 2000,
  month =	 nov
}

@InProceedings{gay03nesC,
  author = 	 {David Gay and Phil Levis and Rob von Behren and Matt Welsh and Eric Brewer and David Culler},
  title = 	 {The {nesC} Language: A Holistic Approach to Networked Embedded Systems},
  booktitle = 	 PLDI,
  year = 	 2003,
  month =	 jun
}

@Article{janneck03actorComposition,
  author = 	 {J\"orn W. Janneck},
  title = 	 {Actors and their Composition},
  journal = 	 {Formal Aspects of Computing},
  year = 	 2003,
  volume =	 15,
  number =	 4,
  pages =	 {349--369}
}

@Article{hudson91attributeEvaluation,
  author = 	 {Scott E. Hudson},
  title = 	 {Incremental Attribute Evaluation: A Flexible Algorithm for Lazy Update},
  journal = 	 toplas,
  year = 	 1991,
  volume =	 13,
  number =	 3,
  pages =	 {315--341}
}

@Book{deransart88attributeGrammars,
  author =	 {Pierre Deransart and Martin Jourdan and Bernard Lorho},
  title = 	 {Attribute Grammars: Definitions, Systems, and Bibliography},
  publisher = 	 SPRINGER,
  year = 	 1988,
  number =	 323,
  series =	 LNCS
}

@Article{knuth68semantics,
  author = 	 {Donald E. Knuth},
  title = 	 {Semantics of Context-Free Languages},
  journal = 	 {Mathematical Systems Theory},
  year = 	 1968,
  volume =	 2,
  number =	 2,
  pages =	 {127--145}
}

@Article{lee91consistency,
  author = 	 {Edward A. Lee},
  title = 	 {Consistency in Dataflow Graphs},
  journal = 	 {IEEE Transactions on Parallel and Distributed Systems},
  year = 	 1991,
  volume =	 2,
  number =	 2,
  pages =	 {223-235},
  month =	 apr
}

@Book{pierce91categoryTheory,
  author =	 {Benjamin C. Pierce},
  title = 	 {Basic Category Theory for Computer Scientists},
  publisher = 	 MIT,
  year = 	 1991
}

@Book{daemen02AES,
  author =	 {Joan Daemen and Vincent Rijmen},
  title = 	 {The Design of {Rijndael}: {AES} -- The Advanced Encryption Standard.},
  publisher = 	 SPRINGER,
  year = 	 2002
}

@Article{lee04MocSurvey,
  author =	 {Edward A. Lee and Stephen Neuendorffer},
  journal = 	 {Proceedings on Computers and Digital Techniques special issue on Embedded System Design},
  title = 	 "A Survey of Embedded System Models of Computation",
  publisher = 	 "IEE",
  year = 	 2004,
  note =	 {to appear}
}

@Book{jones93partialEvaluation,
  author =	 {Neil D. Jones and Carsten K. Gomard and Peter Sestoft},
  title = 	 {Partial Evaluation and Automatic Program Generation},
  publisher = 	 PH,
  year = 	 1993,
  month =	 jun
}

@Book{czarnecki00generativeProgramming,
  author =	 {Krzysztof Czarnecki and Ulrich W. Eisenecker},
  title = 	 {Generative Programming: Methods, tools, and applications},
  publisher = 	 AW,
  year = 	 2000,
  month =        may
}

@InProceedings{maffeis95eventService,
  author =	 {Silvano Maffeis},
  title =	 {Adding Group Communication and Fault-Tolerance to
                  {CORBA}},
  booktitle =	 {Proceedings of the USENIX Conference on
                  Object-Oriented Technologies (COOTS)},
  pages =	 {16--29},
  year =	 1995,
  month =	 jun
}

@InProceedings{hoe99TRSsynthesis,
  author = 	 {James C. Hoe and Arvind},
  title = 	 {Hardware Synthesis from Term Rewriting Systems},
  booktitle =	 {Proceedings of the IFIP Conference on Very Large Scale Integration},
  pages =	 {595--619},
  year =	 1999,
  organization = IFIP,
  month =	 dec,
  publisher =	 KLUWER
}

@InProceedings{hoe2000synthesis,
  author = 	 {James C. Hoe and Arvind},
  title = 	 {Synthesis of Operation-Centric Hardware Descriptions},
  booktitle =	 ICCAD,
  year =	 2000,
  month =	 nov
}

@TechReport{augustsson00bluespec,
  author = 	 {Lennart Augustsson and Jacob Schwartz and Rishiyur Nikhil},
  title = 	 {Bluespec Language Definition},
  institution =  {Sandburst Corporation},
  year = 	 2000,
  month =	 nov
}

@InProceedings{nikhil04bluespec,
  author = 	 {Rishiyur Nikhil},
  title = 	 "{Bluespec SystemVerilog}: Efficient, Correct {RTL} from High-level Specifications",
  booktitle =    MEMOCODE,
  year = 	 2004,
  month =        jun,
}

@Article{bohm02mapping,
  author = 	 {W. B\"ohm and J. Hammes and B. Draper and M. Chawathe and C. Ross and R. Rinker and W. Najjar},
  title = 	 {Mapping a Single Assignment Programming Language to Reconfigurable Systems},
  journal = 	 {The Journal of Supercomputing},
  year = 	 2002,
  volume =	 21,
  number =       2,
  pages =	 {117-130}
}

@InProceedings{draper01SA-C,
  author = 	 {B. Draper and W. B\"ohm and J. Hammes and W. Najjar and R. Beveridge and C. Ross and M. Chawathe and M. Desai and J. Bins},
  title = 	 {Compiling {SA-C} Programs to {FPGAs}: Performance Results},
  booktitle =	 ICVS,
  pages =	 {220-235},
  year =	 2001,
  number =	 2095,
  series =	 LNCS,
  month =	 jul,
  publisher =	 SPRINGER
}

@InProceedings{gao92wellBehaved,
  author = 	 {G.R. Gao and R. Govindarajan and P. Panangaden},
  title = 	 {Well-Behaved Programs for {DSP} Computation},
  booktitle =	 ICASSP,
  pages =	 {V.561--564},
  year =	 1992,
  month =	 mar
}

@Unpublished{boost02metaprogramming,
  author = 	 {Aleksey Gurtovoy and David Abrahams},
  title = 	 {The {Boost} {C++} Metaprogramming Library},
  note = 	 {Available at \url{www.boost.com}},
  month =	 mar,
  year =	 2002
}

@InProceedings{basten01efficientPN,
  author = 	 {Twan Basten and Jan Hoogerbrugge},
  title = 	 {Efficient Execution of Process Networks},
  booktitle =	 {Proceedings of the Conference on Communicating Process Architectures},
  pages =	 {1-14},
  year =	 2001,
  editor =	 {A. Chalmers and M. Mirmehdi and H. Muller},
  month =	 sep,
  publisher =	 {IOS Press}
}

@TechReport{neuendorffer02specialization,
  author = 	 {Stephen Neuendorffer},
  title = 	 {Automatic specialization of actor-oriented models in {Ptolemy II}},
  year = 	 2002,
  month =	 dec,
  institution =	 ERL,
  type =	 MEMO,
  number =	 {M02/41},
  address =	 UCB
}

@Book{messerschmitt03software,
  author =	 {David Messerschmitt and Clemens Szyperski},
  title = 	 {Software Ecosystem: Understanding an Indispensable Technology and Industry},
  publisher = 	 MIT,
  year = 	 2003
}

@book{szyperski02component,
  author = {Clemens Szyperski},
  title = {Component Software - Beyond Object-Oriented Programming},
  publisher = AW,
  year = 2002
}

@inproceedings{lhotak02inlining,
 author = {Ondrej Lhot\'ak and Laurie Hendren},
 title = {Run-time evaluation of opportunities for object inlining in {Java}},
 booktitle = {Proceedings of the ACM-ISCOPE Conference on Java Grande},
 year = {2002},
 pages = {175--184},
 publisher = ACM
}

@Inproceedings{laud01analysis,
  author = "Peeter Laud",
  title = "Analysis for object inlining in Java",
  booktitle = "Java Optimization Strategies for Embedded Systems (JOSES) Workshop, in association with European Joint Conferences on Theory and Practice of Software (ETAPS)",
  editor = "Uwe A\ss{}mann",
  series = {Technical Report},
  number = {2001-10},
  publisher = {Fakult\"{a}t f\"{u}r Informatik, University of Karlsruhe},
  address = {Genova, Italy},
  month = apr,
  year = 2001
}

@inproceedings{bacon00guava,
 author = {David F. Bacon and Robert E. Strom and Ashis Tarafdar},
 title = {Guava: a dialect of Java without data races},
 booktitle = OOPSLA,
 year = {2000},
 pages = {382--400},
 organization = {SIGPLAN},
 publisher = {ACM Press}
}

@inproceedings{reynolds80conversions,
 author = {John C. Reynolds},
 title = {Using category theory to design implicit conversions and generic operators},
 booktitle = {Proceedings of the Workshop on Semantics-Directed Compiler Generation},
 year = 1980,
 pages = {211--258},
 publisher = SPRINGER,
 series = LNCS,
 number = 94,
 month = jan
}

@InProceedings{kaplan97PGM,
  author = 	 {D. J. Kaplan},
  title = 	 {An introduction to the processing graph method},
  booktitle =	 {Proceedings of the International Conference and Workshop on the Engineering of Computer-Based Systems (ECBS)},
  pages =	 {46--52},
  year =	 1997,
  month =	 mar
}

@Article{heithecker07flexfilm,
  author = 		  {Sven Heithecker and Amilcar do Carmo Lucas and Rolf Ernst},
  title = 		  {A High-End Real-Time Digital Film Processing Reconfigurable Platform},
  journal = 	  {EURASIP Journal on Embedded Systems},
  year = 		  2007,
  volume =		  2007,
  pages =		  15,
  note =			  {doi:10.1155/2007/85318}
}

@InCollection{hwang01sysgen,
  author = 		  {James Hwang and Brent Milne and Nabeel Shirazi and Jeffrey D. Stroomer},
  title = 		  {System Level Tools for {DSP} in {FPGA}s},
  booktitle =	  {Field-Programmable Logic and Applications},
  pages =		  {534--543},
  year =			  2001,
  number =		  2147,
  series =		  LNCS,
  month =		  jan,
  publisher =	  SPRINGER
}

@ARTICLE{majer07slotmachine,
        AUTHOR             = {Mateusz Majer and J{\"u}rgen Teich and Ali Ahmadinia and Christophe Bobda},
        JOURNAL            = {Journal of VLSI Signal Processing Systems},
        PUBLISHER          = SPRINGER,
        TITLE              = {The {E}rlangen {S}lot {M}achine: A Dynamically Reconfigurable {FPGA}-Based Computer},
        VOLUME             = 47,
        NUMBER             = 1,
        PAGES              = {15--31},
        MONTH              = mar,
        YEAR               = 2007
}

@Article{sedcole2006modularreconfiguration,
  author = 		  {P. Sedcole and B. Blodget and T. Becker and J. Anderson and P. Lysaght},
  title = 		  {Modular dynamic reconfiguration in {V}irtex {FPGA}s},
  journal = 	  {IEE Proceedings on Computers and Digital Techniques},
  year = 		  2006,
  volume =		  153,
  number =		  3,
  pages =		  {157--164},
  month =		  may
}

@Book{yaghmour03embeddedlinux,
  author =		  {Karim Yaghmour},
  title = 		  {Building Embedded Linux System},
  publisher = 	  OREILLY,
  year = 		  2003
}

%Building Embedded Linux System
@Book{corbett2005linuxdrivers,
  author =		  {J. Corbett and A. Rubini and G. Kroah-Hartman},
  title = 		  {Linux Device Drivers},
  publisher = 	  OREILLY,
  year = 		  2005,
  edition =		  {3rd}
}
@InProceedings{blodget03SRP,
  author = 		  {Brandon Blodget and Philip James-Roxby and Eric Keller and Scott McMillan and Prasanna Sundararajaran},
  title = 		  {A Self-Reconfiguring Platform},
  booktitle =	  FPL,
  year =			  2003,
  number =		  2778,
  series =		  LNCS,
  month =		  sep,
  publisher =	  SPRINGER
}

@InProceedings{williams04SRP,
  author = 		  {J. Williams and N. Bergmann},
  title = 		  {Embedded Linux as a platform for dynamically self-reconfiguring systems-on-chip},
  booktitle =	  {Proceeedings of the International MultiConference in
Computer Science and Computer Engineering (ERSA)},
  year =			  2004,
  month =		  jun
}


@InProceedings{so06borph,
  author = 		  {Hayden Kwok-Hay So and Robert W. Brodersen},
  title = 		  {Improving Usability of {FPGA}-Based Reconfigurable Computers through Operating System Support},
  booktitle =	  FPL,
  year =			  2006
}

@InProceedings{castillo05SRP,
  author = 		  {J. Castillo and P. Huerta and V. Lopez and J. Martinez},
  title = 		  {A secure self-reconfiguring architecture based on open-source hardware},
  booktitle =	  {International Conference on Reconfigurable Computing and FPGAs (ReConFig)},
  year =			  2005
}

@InProceedings{fong03SRP,
  author = 		  {R. Fong and S. Harper and P. Athanas},
  title = 		  {A Versatile Framework for {FPGA} Field Updates: An Application of Partial Self-Reconfiguration},
  booktitle =	  {Proceedings of the IEEE International Workshop on Rapid System Prototyping},
  year =			  2003,
  month =		  jun
}

@InProceedings{parsons06casper,
  author = 		  {Aaron Parsons and others},
  title = 		  {A Scalable Correlator Architecture Based on Modular {FPGA} Hardware and Data Packetization},
  booktitle =	  {Asilomar Conference on Signals, Systems, and Computers},
  year =			  2006,
  month =		  nov
}

@Unpublished{parsons08ATAcorrelator,
  author = 		  {Aaron Parsons and others},
  title = 		  {A Scalable Correlator Architecture Based on Modular {FPGA} Hardware and Data Packetization},
  note = 		  {Submitted to {IEEE} Transactions on Signal Processing, available at http://casper.berkeley.edu/papers/2008-02\_parsons\_et\_al-correlator.pdf},
  month =		  feb,
  year =			  2008
}

@Article{dehon06score,
  author = 		  {Andre DeHon and others},
  title = 		  {Stream Computations Organized for Reconfigurable Execution},
  journal = 	  {Journal of Microprocessors and Microsystems},
  year = 		  2006,
  volume =		  30,
  number =		  6,
  pages =		  {334--354},
  month =		  sep
}

@InProceedings{taylor04:raw,
  author = 		  {Michael Bedford Taylor and others},
  title = 		  {Evaluation of the {Raw} Microprocessor: An Exposed-Wire-Delay Architecture for {ILP} and Streams},
  booktitle =	  {Proceedings of International Symposium on Computer Architecture},
  year =			  2004,
  month =		  jun
}

@InProceedings{gordon06streamit,
  author = "Michael Gordon and William Thies and Saman Amarasinghe",
  title = "Exploiting Coarse-Grained Task, Data, and Pipeline Parallelism in Stream Programs",
  month = Oct,
  year = 2006,
  booktitle = "International Conference on Architectural Support for Programming Languages and Operating Systems"
}


@article{haubelt07SystemMOC,
        AUTHOR = {Christian Haubelt and Joachim Falk and Joachim Keinert and Thomas Schlichter and Martin Streub{\"u}hr and Andreas Deyhle and Andreas Hadert and J{\"u}rgen Teich},
        TITLE = {{A SystemC-based Design Methodology for Digital Signal Processing Systems}},
        JOURNAL = {EURASIP Journal on Embedded Systems, Special Issue on Embedded Digital Signal Processing Systems},
        VOLUME = 2007,
        PAGES = 22,
        NOTE = {doi:10.1155/2007/47580},
        YEAR = 2007
}


@InProceedings{neuendorffer07alcatraz,
  author = 		  {Stephen Neuendorffer and Chad Epifanio},
  title = 		  {Generalizing Partial Reconfiguration Designs},
  booktitle =	  {Proceedings of the Software Defined Radio Technical Conference (SDRForum)},
  year =			  2007,
  month =		  nov
}



@InProceedings{snider02pico,
  author = 		  {Greg Snider},
  title = 		  {Performance-constrained pipelining of software loops onto reconfigurable hardware},
  booktitle =	  FPGA,
  pages =		  {177--186},
  year =			  2002
}

@InProceedings{uhm05sdr,
  author = 		  {M. Uhm and J. Bezile},
  title = 		  {Meeting Software Defined Radio cost and power targets:
Making SDR feasible},
  booktitle =	  {Military Embedded Systems},
  pages =		  {6--8},
  year =			  2005,
  month =		  may
}

@inproceedings{murphy06warp,
	Author = {Patrick Murphy and Ashu Sabharwal and Behnaam Aazhang},
	Booktitle = {Proceedings of the European Signal Processing Conference (EUSIPCO)},
	Title = {Design of {WARP}: A Flexible Wireless Open-Access Research Platform},
	Year = 2006
}


@Manual{ultrascaleArchConfig,
  title = 		  {{UltraScale} Architecture Configuration (UG570)},
  organization = {Xilinx},
  edition =		  {v1.7},
  month = mar,
  year =2017,
  URL={https://www.xilinx.com/support/documentation/user\_guides/ug570-ultrascale-configuration.pdf}
}

@Manual{ug902,
  title = 		  {{Vivado} Design Suite User Guide: High-Level Synthesis (UG902)},
  organization = {Xilinx},
  edition =		  {v2017.1},
  month = apr,
  year=2017,
  URL ={https://www.xilinx.com/support/documentation/sw\_manuals/xilinx2017\_1/ug902-vivado-high-level-synthesis.pdf}
}

@Manual{ug574,
  title = 		  {{UltraScale} Architecture Configurable Logic Block (UG574)},
  organization = {Xilinx},
  edition =		  {v1.5},
  month = feb,
  year=2017,
  URL ={https://www.xilinx.com/support/documentation/user_guides/ug574-ultrascale-clb.pdf}
}

@Manual{plbv46plbv46bridge,
  title = 		  {PLBv46 to PLBv46 Bridge Data Sheet},
  organization = {Xilinx},
  edition =		  {DS618},
  note =			  {Version 1.00.a, available at http://www.xilinx.com/bvdocs/ipcenter/data\_sheet/plbv46_plbv46_bridge.pdf, accessed on March 6, 2008.}
}

@Misc{opensparc,
  author =		  {Sun},
  title =		  {OpenSparc Web page},
  howpublished = {http://www.opensparc.net.  Accessed on March 7, 2008}
}


@Article{kathail02pico,
  author = 		  {Vinod Kathail and Shail Aditya and Rob Schreiber and B. Ramakrisha (Bob) Rau and Darren Cronquist and Mukund Sivaraman},
  title = 		  {{PICO (Program In, Chip Out): Automatically Designing Custom Computers}},
  journal = 	  COMPUTER,
  year = 		  2002,
  volume =		  35,
  number =		  9,
  pages =		  {39--47},
  month =		  sep
}

@inproceedings{stefanov04compaan,
 author = {Todor Stefanov and Claudiu Zissulescu and Alexandru Turjan and Bart Kienhuis and Ed Deprettere},
 title = {System Design Using Kahn Process Networks: The Compaan/Laura Approach},
 booktitle = DATE,
 year = 2004,
 publisher = IEEE,
}

@InProceedings{gibson06devicetrees,
  author = 		  {David Gibson and Benjamin Herrenschmidt},
  title = 		  {Device Trees Everywhere},
  booktitle =	  {Proceedings of linux.conf.au},
  year =			  2006,
  month =		  jan,
  note =         "Available at http://ozlabs.org/people/dgibson/home/papers/dtc-paper.pdf, Accessed April 28, 2008."
}

@Misc{power08epapr,
  author = 		  {Power.org},
  title = 		  {Power.org Standard for Embedded Power Architecture Platform Requirements (ePAPR)},
  month =		  jul,
  year =			  2008,
 note =			  {Version 1.0}
}

@Misc{ibm07plb47,
  author =		  {IBM},
  title =		  {128-Bit Processor Local Bus Architecture Specifications Version 4.7},
  month =		  may,
  year =			  2007
}

@Misc{ibm06dcr35,
  author =		  {IBM},
  title =		  {Device Control Register Bus Architecture Specifications Version 3.5},
  month =		  jan,
  year =			  2006
}

@Manual{xilinx07plb46simplifications,
  title = 		  {PLBV46 Interface Simplifications},
  organization = {Xilinx},
  edition =		  {SP026},
  month =		  oct,
  year =			  2007
}

@Manual{xilinx08v4configuration,
  title = 		  {Virtex-4 FPGA Configuration User Guide},
  organization = {Xilinx},
  edition =		  {UG071 v1.10},
  month =		  apr,
  year =			  2008
}

@Manual{xilinx08v4user,
  title = 		  {Virtex-4 FPGA User Guide},
  organization = {Xilinx},
  edition =		  {UG070 v2.40},
  month =		  apr,
  year =			  2008
}

@Manual{xilinx07edk,
  title = 		  {Embedded System Tools eference Manual},
  organization = {Xilinx},
  edition =		  {UG111 v9.2},
  month =		  sep,
  year =			  2007
}


@InProceedings{castillo05securesrp,
  author = 		  {J. Castillo and P. Huerta and V. Lopez and J. Martinez},
  title = 		  {A secure self-reconfiguring architecture based on open-source hardware},
  booktitle =	  {International Conference on Reconfigurable Computing and FPGAs (ReConFig)},
  year =			  2005,
  month =		  sep
}

@InProceedings{fong03fieldupdates,
  author = 		  {R. Fong and S. Harper and P. Athanas},
  title = 		  {A Versatile Framework for {FPGA} Field Updates: An Application of Partial Self-Reconfiguration},
  booktitle =	  {Proceedings of the IEEE International Workshop on Rapid System Prototyping},
  year =			  2003,
  month =		  jun
}

@Article{kuon07fpgagap,
  author = 		  {Ian Kuon and Johnathan Rose},
  title = 		  {Measuring the Gap Between {FPGAs} and {ASICs}},
  journal = 	  IEEETCAD,
  year = 		  2007,
  volume =		  26,
  number =		  2,
  pages =		  {203--215},
  month =		  feb
}

@Misc{freeman89fpga,
  author =		  {Ross Freeman},
  title =		  {Configurable electrical circuit having configurable logic elements and configurable interconnects},
  howpublished = {US Patent 4870302},
  month =		  sep,
  year =			  1989
}

@Misc{triscendDatasheet,
  author =		  {Triscend},
  title =		  {Triscend E5 Configurable System-on-Chip Platform datasheet},
  month =		  jul,
  year =			  2001,
  note =			  {v1.06}
}

@INPROCEEDINGS{neuendorffer08streaming,
  AUTHOR =       {Stephen Neuendorffer and Kees Vissers},
  TITLE =        {Streaming systems in \uppercase{FPGAs}},
  BOOKTITLE =    {Samos Workshop on Embedded Computer Systems, Architectures, Modeling, and Simulation},
  YEAR =         {2008},
  publisher =	 SPRINGER,
  series =	 LNCS,
  number =	 5114,
  pages =        {147--156},
  month =        jul,
}

@InProceedings{Kahn1,
  author =       "Kahn, Gilles",
  title =        "{T}he {S}emantics of a {S}imple {L}anguage For {P}arallel {P}rogramming",
  booktitle =    "Proc. of the IFIP Congress 74",
  publisher =    NH,
  year =         1974
}

@inproceedings{tumeo2007dct,
  author = {Tumeo, Antonino and Monchiero, Matteo and Palermo, Gianluca and Ferrandi, Fabrizio and Sciuto, Donatella},
  title = "{A Pipelined Fast 2D-DCT Accelerator for FPGA-based SoCs}",
  booktitle = {Proc. of the IEEE Comp. Soc. Annual Symposium on VLSI},
  year = {2007},
  isbn = {0-7695-2896-1},
  pages = {331--336},
  doi = {http://dx.doi.org/10.1109/ISVLSI.2007.13}
}


@inproceedings{laura03fpl,
  author = "C. Zissulescu and T.P. Stefanov and B. Kienhuis and E.F. Deprettere",
  title = "{LAURA: Leiden Architecture Research and Exploration Tool}",
  booktitle = FPL,
  pages = "911-920",
  month = sep,
  year = 2003
}


@inproceedings{codes02kpn,
  author = {T.P. Stefanov and B. Kienhuis and E.F. Deprettere},
  title = "{Algorithmic Transformation Techniques for Efficient Exploration of Alternative Application Instances}",
  booktitle = CODES,
  year = {2002},
  isbn = {1-58113-542-4},
  pages = {7-12},
  location = {Estes Park, Colorado},
  publisher = {ACM Press}
}

@inproceedings{daedalus08dac,
  author = "Nikolov et al., H. ",
  title = "{Daedalus: Toward Composable Multimedia MP-SoC Design}",
  booktitle = DAC,
  location= {Anaheim, USA},
  month = jun,
  year = 2008
}

@inproceedings{espam06,
  author = "H. Nikolov and T.P. Stefanov and E.F. Deprettere",
  title = "{M}ulti-processor {S}ystem {D}esign with {ESPAM}",
  booktitle = "Proc. of the Conference on HW/SW Codesign and System Synthesis (CODES-ISSS'06)",
  pages = {211-216},
  month = oct,
  year = 2006
}


@inproceedings{kienhuis97asap,
  author = "B. Kienhuis and E.F. Deprettere and K. Vissers and P. van der Wolf",
  title = "{An Approach for Quantitative Analysis of Application-Specific Dataflow Architectures}",
  booktitle = ASAP,
  month = jul,
  year = 1997
}


@inproceedings{svhaastr09date,
  author = "S. van Haastregt and B. Kienhuis",
  title = "{Automated Synthesis of Streaming C Applications to Process Networks in Hardware}",
  booktitle = DATE,
  month = apr,
  year = 2009
}

@inproceedings{spheredetector2009sdr,
  author = "{C. Dick et al.}",
  title = "{FPGA Implementation of a Near-ML Sphere Detector for 802.16e Broadband Wireless Systems}",
  booktitle = "Proc. of the SDR'09 Technical Conference",
  month = dec,
  year = 2009
}

@inproceedings{thompson06rapid,
  author = "L.G. Barbero and J.S. Thompson",
  title  = "{Rapid Prototyping of a Fixed-Throughput Sphere Decoder for MIMO Systems}",
  booktitle = "Proc. of the IEEE Int. Conference on Communications (ICC'06)",
  month = jun,
  year = 2006
}

@inproceedings{barbero06fpl,
  author = "L.G. Barbero and J.S. Thompson",
  title = "{FPGA Design Considerations in the Implementation of a Fixed-Throughput Sphere Decoder for MIMO Systems}",
  booktitle = FPL,
  month = aug,
  year = 2006
}

@inproceedings{yang2008globecom,
  author = "C.H. Yang and D. Markovic.",
  title = "{A Multi-Core Sphere Decoder VLSI Architecture for MIMO Communications}",
  booktitle = "Global Telecommunications Conference (GLOBECOM'08)",
  month = dec,
  year = 2008
}

@inproceedings{lordmimo2010date,
  author = "T. Cupaiuolo and M. Siti and A. Tomasoni",
  title = "{Low-Complexity High Throughput VLSI Architecture of Soft-Output ML MIMO Detector}",
  booktitle = DATE,
  month = mar,
  year = 2010
}

@inproceedings{su2005ordering,
  author = "K. Su and I.J. Wassell",
  title = "{A New Ordering for Efficient Sphere Decoding}",
  booktitle = "Proc. of the IEEE International Conf. Commun.",
  month = may,
  year = 2005
}

@inproceedings{denolf2009fpl,
  author = "K. Denolf and S. Neuendorffer and K. Vissers",
  title = "{Using C-to-gates to program streaming image processing kernels efficiently on FPGAs}",
  booktitle = FPL,
  month = sep,
  year = 2009
}

@inproceedings{streaming2008samos,
  author = "S. Neuendorffer and K. Vissers",
  title = "{Streaming systems in FPGAs}",
  booktitle = "Int. Workshop on Embedded Computer Systems: Architectures, Modeling, and Simulation (SAMOS 2008)",
  month = jul,
  year = 2008
}

@inproceedings{cong2009iccadsoft,
  author = "J. Cong and B. Liu and Z. Zhang",
  title = "{Scheduling with Soft Constraints}",
  booktitle = ICCAD,
  month = nov,
  year = 2009
}

@inproceedings{cong2009iccadmemory,
  author = "J. Cong and W. Jiang and B. Liu and Y. Zou",
  title = "{Automatic Memory Partitioning and Scheduling for Throughput and Power Optimization}",
  booktitle = ICCAD,
  month = nov,
  year = 2009
}

@inproceedings{cong2006xpilot,
  author = "J. Cong and Y. Fan and G. Han and W. Jiang and Z. Zhang",
  title = "{Platform-Based Behavior-Level and System-Level Synthesis}",
  booktitle = "Proc. of the Int. SoC Conference",
  month = sep,
  year = 2006
}

@inproceedings{catapultc2005date,
  author = "A. Takach and B. Bowyer and T. Bollaert",
  title = "{C Based Hardware Design for Wireless Applications}",
  booktitle = DATE,
  month = mar,
  year = 2005
}

@inproceedings{impulsec2010ct,
  author = "J. Xu and N. Subramanian and A. Alessio and S. Hauck",
  title = "{Impulse C vs. VHDL for Accelerating Tomographic Reconstruction}",
  booktitle = FCCM,
  month = may,
  year = 2010
}






# TODO: vol 17, no 11???
@article{ahmed09vlsi,
  author = "Sudip Mondal and Ahmed Eltawil and Chung-An Shen and Khaled Salama",
  title = "{Design and Implementation of a Sort Free K-Best Sphere Decoder}",
  journal = IEEETVLSI,
  volume = "17",
  number = "11",
  month = nov,
  year = 2009
}

@article{flexsphere2009,
  author = "Kiarash Amiri and Joseph Cavallaro and Chris Dick and Raghu Mysore Rao",
  title = "{A High Throughput Configurable SDR Detector for Multi-user MIMO Wireless Systems}",
  journal = "Journal of Signal Processing Systems",
  publisher = "Springer",
  month = apr,
  year = 2009
}

@article{sesame06,
  author = "A.D. Pimentel and C. Erbas and S. Polstra",
  title = "{A Systematic Approach to Exploring Embedded System Architectures at Multiple Abstraction Levels}",
  journal = IEEETC,
  volume = 55,
  number = 11,
  month = feb,
  year = 2006
}

@article{laura08eurasip,
  author = "H.N. Nikolov and T.P. Stefanov and E.F. Deprettere",
  title = "{Automated Integration of Dedicated Hardwired IP Cores in Heterogeneous MPSoCs Designed with ESPAM}",
  journal = "EURASIP Journal on Embedded Systems",
  year = 2008
}

@article{verdool07pn,
  author = "S. Verdoolaege and H.N. Nikolov and T.P. Stefanov",
  title = "{PN}: a {T}ool for {I}mproved {D}erivation of {P}rocess {N}etworks",
  journal = "EURASIP Journal on Embedded Systems",
  year = "2007"
}

@article{nikolov08tcad,
  author = "H. Nikolov and T.P. Stefanov and E.F. Deprettere",
  title = "{Systematic and Automated Multi-processor System Design, Programming, and Implementation}",
  journal = IEEETCAD,
  volume = 27,
  number = 3,
  month = mar,
  year = 2008
}

@article{molen04,
  author = "S. Vassiliadis and S. Wong and G.N. Gaydadjiev and K. Bertels and G. Kuzmanov and E.M. Panainte",
  title = "{The MOLEN Polymorphic Processor}",
  journal = IEEETC,
  volume = {53},
  number = {11},
  year = {2004},
  pages = {1363--1375},
  publisher = IEEE
}

@article{paro06,
  author = "F. Hannig and H. Dutta and J. Teich",
  title = "{Mapping a Class of Dependence Algorithms to Coarse-Grained Reconfigurable Arrays: Architectural Parameters and Methodology}",
  journal = "International Journal of Embedded Systems",
  volume = {2},
  number = {1/2},
  pages = "114--127",
  year = 2006
}

@article{cloogvhdl,
  author = "H. Devos and K. Beyls and M. Christiaens and J. van Campenhout and E.H. D'Hollander and D. Stroobandt",
  title = "{Finding and Applying Loop Transformations for Generating Optimized FPGA Implementations}",
  journal = "Transactions on High Performance Embedded Architectures and Compilers I",
  pages = "159--178",
  volume= {4050},
  month = jul,
  year = 2007
}




@book{henpatcomputerarch,
  author = "J.L. Hennessy and D.A. Patterson",
  title = "{C}omputer {A}rchitecture: {A} {Q}uantitative {A}pproach",
  publisher = MK,
  year = 2003
}

@book{shepherd1993,
  author = "T.J. Shepherd and J.G. McWhirter",
  title = "{Systolic Adaptive Beamforming -- Radar Array Processing}",
  series = "Springer Series in Information Sciences",
  volume = "25",
  year = 1993,
  publisher = SPRINGER
}

@book{bahai2004ofdm,
  author = "A.R.S. Bahasi and B.R. Saltzberg and M. Ergen",
  title = "{Multi-Carrier Digital Communications Theory and Applications of OFDM}",
  publisher = "Springer",
  year = 2004
}

@book{hlsbook2008,
  editor = "Philippe Coussy and Adam Morawiec",
  title = "{High-Level Synthesis -- From Algorithm to Digital Circuit}",
  publisher = "Springer",
  year = 2008
}




@techreport{wilde94alpha,
  author = "D.K. Wilde",
  title = "The {ALPHA} Language",
  institution = "IRISA",
  month = jan,
  year = 1994,
  number = "999"
}

@techreport{hardwarec2,
  author = {D. Ku and G. De Micheli},
  title = {Hardware{C} -- {A} {L}anguage for {H}ardware {D}esign ({V}ersion 2.0)},
  year = {1990},
  month = aug,
  institution = {Stanford University},
  number = "CSL-TR-90-419"
}

@techreport{yingmsc06,
  author = "Y. Tao and H. Nikolov and T.P. Stefanov and E.F. Deprettere",
  title = "{Heterogeneous Multiprocessor System Design with ESPAM: Integration of Hardware IP Cores}",
  number = "06-21",
  institution = "LIACS, Leiden University",
  month  = dec,
  year = 2006
}

@manual{picowritingcapps,
  author = "Synfora inc.",
  title = "{PICO Express -- Writing C Applications: Developer's Guide}",
  year = 2007
}

@manual{speccmanual,
  author = "R. D{\"{o}}mer and A. Gerstlauer and D. Gajski",
  title = "{SpecC Language Reference Manual}",
  month = dec,
  year = 2002
}

@manual{fsldatasheet,
  author = "Xilinx inc.",
  title = "{Fast Simplex Link (FSL) Bus (v2.10a)} -- Product Specification",
  month = nov,
  year = 2006
}


@Misc{bdtihls,
  author = "BDTI",
  title = "{An Independent Evaluation of: High-Level Synthesis Tools for Xilinx FPGAs}",
  howpublished = "White paper",
  year = 2010
}


@Misc{daedalusweb,
  author = "",
  title = "{D}aedalus home",
  howpublished = "\\\url{http://daedalus.liacs.nl/}, last accessed: 2009-09-02"
}

@Misc{synforapicoold,
  author = "{Synfora Inc.}",
  title      =   "{PICO Technology}",
  howpublished = "\\\url{http://www.synfora.com/}, last accessed: 2010-04-14"
}

@Misc{synforapico,
  author = "{Synfora Inc.}",
  title      =   "{PICO Technology}",
  howpublished = "Available: http://www.synfora.com/"
}

@Misc{autopilot,
  author = "{AutoESL Design Technologies Inc.}",
  title  = "{AutoPilot}",
  howpublished = "Available: http://www.autoesl.com/"
}

@Manual{systemc,
  organization = "Accellera",
  title = "{SystemC}",
  edition = {2.3.2},
month=oct,
    year=2017,
  howpublished = "\\\url{http://www.accellera.org/downloads/standards/systemc}, last accessed: 2018-01-23",
  URL={http://www.accellera.org/downloads/standards/systemc}
}

@Misc{alphawebsite,
  author = "T. Risset et al.",
  title = "Alpha Homepage",
  howpublished = "\\\url{http://www.irisa.fr/cosi/ALPHA/}, last accessed: 2008-01-17"
}

@Misc{tridentwebsite,
  author = "Los Alamos National Laboratory",
  title = "{T}rident {C}ompiler",
  howpublished = "\\\url{http://trident.sourceforge.net/}, last accessed: 2008-01-10"
}

@Misc{speccorg,
  author = "SpecC Technology Open Consortium",
  title = "{SpecC}",
  howpublished = "\\\url{http://www.specc.org/}, last accessed: 2008-01-08"
}

@Misc{impulsec,
  author = "Impulse Accelerated Technologies",
  title = "{Impulse C}",
  howpublished = "\\\url{http://www.impulsec.com/}, last accessed: 2008-01-07"
}

@Misc{mitrionicswebsite,
  author = "Mitrionics",
  title = "{Mitrion Platform}",
  howpublished = "\\\url{http://www.mitrionics.com/}, last accessed: 2008-07-07"
}

@Misc{srccarte,
  author = "SRC Computers",
  title = "{Carte Programming Environment}",
  howpublished = "\\\url{http://www.srccomp.com/techpubs/carte.asp}, last accessed: 2008-01-08"
}

@Misc{streamscweb,
  author = "M.B. Gokhale",
  title = "{Streams-C: Stream-Oriented C Programming for FPGAs}",
  howpublished = "\\\url{http://www.streams-c.lanl.gov}, last accessed: 2008-01-08"
}

@Misc{sparkwebsite,
  author = "S. Gupta et al.",
  title = "{SPARK: High-Level Synthesis using Parallelizing Compiler Techniques}",
  howpublished = "\\\url{http://mesl.ucsd.edu/spark/}, last accessed: 2008-01-10"
}

@Misc{graphviz,
  author = "AT\&T Research",
  title = "{Graphviz - Graph Visualization Software}",
  howpublished = "\\\url{http://www.graphviz.org/}, last accessed: 2008-06-19"
}

@Misc{disydentwebsite,
  author = "ASIM department of Laboratoire d'Informatique de Paris 6 (LIP6)",
  title = "{DIgital SYstem Design ENviromenT}",
  howpublished = "\\\url{http://www-asim.lip6.fr/recherche/disydent/}, last accessed: 2008-08-08"
}

@Misc{catapultsynthesis,
  author = "Mentor Graphics",
  title = "{Catapult Synthesis}",
  howpublished = "\\\url{http://www.mentor.com/products/esl/high_level_synthesis/catapult_synthesis/}, last accessed: 2008-08-08"
}

@MASTERSTHESIS{Feraaz09,
  author = {Feraaz Imami},
  title = {Simulation and Exploration of LAURA Processor Architectures with SystemC},
  school = {LIACS - Leiden Institute of Advanced Computer Science, Leiden, Holland},
  year = {2009},
  month=jul
}

@phdthesis{sun2008thesis,
  author =   "H. Sun",
  title =  "{Throughput Constrained and Area Optimized Dataflow Synthesis for FPGAs}",
  school =   "Brigham Young University",
  month = apr,
  year =   2008
}


@article{dse-simulink,
  author = {Ou, Jingzhao and Prasanna, Viktor},
  title = "{Design Space Exploration using Arithmetic-level Hardware--Software Cosimulation for Configurable Multiprocessor Platforms}",
  journal = {ACM Trans. Embed. Comp. Sys.},
  volume = {5},
  number = {2},
  year = {2006},
  issn = {1539-9087},
  pages = {355--382},
  doi = {http://doi.acm.org/10.1145/1151074.1151080},
  publisher = ACM,
}

@inproceedings{systemc-es,
 author = {Rissa, Tero and Donlin, Adam and Luk, Wayne},
 title = {Evaluation of SystemC Modelling of Reconfigurable Embedded Systems},
 booktitle =DATE,
 year = {2005},
 isbn = {0-7695-2288-2},
 pages = {253--258},
 doi = {http://dx.doi.org/10.1109/DATE.2005.143},
 publisher = IEEE
}

@inproceedings{MPSoC-challenge,
 author = {Martin, Grant},
 title = "{Overview of the MPSoC design challenge}",
 booktitle = DAC,
 pages = {274--279},
 month = jul,
 year = {2006},
 isbn = {1-59593-381-6},
 doi = {http://doi.acm.org/10.1145/1146909.1146980}
}

@Misc{SoClib,
  author = "SoClib",
  title = "{The SoClib Project}",
  howpublished = "\\\url{https://www.soclib.fr/trac/dev/wiki}, last accessed: 2009-08-13"
}

@inproceedings{hierarchical,
 author = {Mohanty, Sumit and Prasanna, Viktor K.},
 title = {A hierarchical approach for energy efficient application design using heterogeneous embedded systems},
 booktitle = CODES,
 pages = {243--254},
 month = oct,
 year = {2003},
 isbn = {1-58113-676-5},
 doi = {http://doi.acm.org/10.1145/951710.951743},
}

@inproceedings{SystemCoDesigner,
 author = {Haubelt, Christian and Schlichter, Thomas and Keinert, Joachim and Meredith, Mike},
 title = "{SystemCoDesigner -- Automatic Design Space Exploration and Rapid Prototyping from Behavioral Models}",
 booktitle = DAC,
 month = jun,
 year = {2008},
 isbn = {978-1-60558-115-6},
 pages = {580--585},
 doi = {http://doi.acm.org/10.1145/1391469.1391616},
}

@article{systemcodesigner2009acm,
  author = {Keinert et al., J.},
  title = "{SystemCoDesigner -- An Automatic ESL Synthesis Approach by Design Space Exploration and Behavioral Synthesis for Streaming Applications}",
  journal = ACMTODAES,
  volume = {14},
  number = {1},
  year = {2009},
  publisher = ACM
}

@inproceedings{brandolese2004,
  author = {Brandolese, Carlo and Fornaciari, William and Salice, Fabio},
  title = "{An Area Estimation Methodology for FPGA Based Designs at SystemC-Level}",
  booktitle = DAC,
  year = {2004},
  isbn = {1-58113-828-8},
  pages = {129--132},
  doi = {http://doi.acm.org/10.1145/996566.996606}
}

@inproceedings{milder2006,
  author = {Milder, Peter A. and Ahmad, Mohammad and Hoe, James C. and P\"{u}schel, Markus},
  title = "{Fast and Accurate Resource Estimation of Automatically Generated Custom DFT IP cores}",
  booktitle = FPGA,
  year = {2006},
  isbn = {1-59593-292-5},
  pages = {211--220},
  doi = {http://doi.acm.org/10.1145/1117201.1117232}
}

@inproceedings{xu1996,
  author = {Xu, Min and Kurdahi, Fadi},
  title = "{Area and Timing Estimation for Lookup Table Based FPGAs}",
  booktitle = {Proc. of the Eur. Conference on Design and Test (EDTC'96)},
  year = {1996},
  isbn = {0-8186-7423-7},
  pages = {151}
}


@inproceedings{papaefthymiou91,
 author = {Papaefthymiou, Marios C.},
 title = {Understanding retiming through maximum average-weight cycles},
 booktitle = {SPAA '91: Proceedings of the third annual ACM symposium on Parallel algorithms and architectures},
 year = {1991},
 pages = {338--348},
 }

@inproceedings{leiserson93,
 author = {Leiserson, C. and Rose, F. and Saxe, J.},
 title = {Optimizing synchronous circuitry by retiming},
 booktitle = {Third Caltech Conference On VLSI},
 year = {1993}
}

@article{cooley65,
     jstor_articletype = {research-article},
     title = {An Algorithm for the Machine Calculation of Complex Fourier Series},
     author = {Cooley, James W. and Tukey, John W.},
     journal = {Mathematics of Computation},
     jstor_issuetitle = {},
     volume = {19},
     number = {90},
     jstor_formatteddate = {Apr., 1965},
     pages = {297--301},
     url = {http://www.jstor.org/stable/2003354},
     ISSN = {00255718},
     abstract = {},
     language = {English},
     year = {1965},
     publisher = {American Mathematical Society},
     copyright = {Copyright \copyright 1965 American Mathematical Society},
    }


@ARTICLE{heideman84, 
	author={Heideman, M. and Johnson, D. and Burrus, C.}, 
journal={ASSP Magazine, IEEE},
title={Gauss and the history of the fast fourier transform}, 
year={1984}, 
month=oct, 
volume={1}, 
number={4}, 
pages={14--21}, 
keywords={}, 
doi={10.1109/MASSP.1984.1162257}, 
ISSN={0740-7467},
}

@book{CLR,
 author = {Cormen, Thomas H. and Leiserson, Charles E. and Rivest, Ronald L. and Stein, Clifford},
 title = {Introduction to Algorithms, Third Edition},
 year = {2009},
 isbn = {0262033844, 9780262033848},
 edition = {3rd},
 publisher = MIT,
} 

@misc{bayer76,
author = {Bayer, Bryce E.},
title = {Color imaging array},
year = 1976,
month = Jul,
day = 7,
 number = {US 3971065},
note = {US 3971065},
 type = {Patent},
}

@inproceedings{bayliss12sdram,
  author    = {Samuel Bayliss and
               George A. Constantinides},
  title     = {Optimizing {SDRAM} bandwidth for custom {FPGA} loop accelerators},
  booktitle = FPGA,
  publisher = ACM,
  month = feb,
  year      = {2012},
  pages     = {195-204},
  ee        = {http://doi.acm.org/10.1145/2145694.2145727},
}

@inproceedings{gentleman1966fast,
  title={Fast Fourier Transforms: for fun and profit},
  author={Gentleman, W Morven and Sande, Gordon},
  booktitle={Proceedings of the November 7-10, 1966, fall joint computer conference},
  pages={563--578},
  year={1966},
  organization=ACM
}

@article{cong2011high,
  title={High-level synthesis for FPGAs: From prototyping to deployment},
  author={Cong, Jason and Liu, Bin and Neuendorffer, Stephen and Noguera, Juanjo and Vissers, Kees and Zhang, Zhiru},
  journal=IEEETCAD,
  volume={30},
  number={4},
  pages={473--491},
  year={2011},
  publisher=IEEE
}

@inproceedings{chen2012fpga,
  title={{FPGA}-accelerated {3D} reconstruction using compressive sensing},
  author={Chen, Jianwen and Cong, Jason and Yan, Ming and Zou, Yi},
  booktitle=FPGA,
  pages={163--166},
  year={2012},
  organization=ACM
}

@inproceedings{mataidesigning,
  title={Designing a Hardware in the Loop Wireless Digital Channel Emulator for Software Defined Radio},
  author={Matai, Janarbek and Meng, Pingfan and Wu, Lingjuan and Weals, Brad T and Kastner, Ryan},
  booktitle=FPT,
  year={2012},
  organization=IEEE 
}

@inproceedings{matai2energy,
  title={Energy Efficient Canonical Huffman Encoding},
  author={Matai, Janarbek and Kim, Joo-Young and Kastner, Ryan},
  booktitle=ASAP,
	year={2014},
  organization=IEEE
}

@inproceedings{lee250high,
  title={High Throughput Channel Tracking for {JTRS} Wireless Channel Emulation},
  author={Lee, Dajung and Matai, Janarbek and Weals, Brad and Kastner, Ryan},
  booktitle=FPL,
  year={2014},
  organization=IEEE
}

@techreport{blelloch1990prefix,
	author = "Guy~E. Blelloch",
	title = "Prefix Sums and Their Applications",
	institution = "School of Computer Science, Carnegie Mellon University",
	number = "CMU-CS-90-190",
	month = nov,
	year = 1990 
}

@book{mccool2012structured,
  title={Structured parallel programming: patterns for efficient computation},
  author={McCool, Michael and Reinders, James and Robison, Arch},
  year={2012},
  publisher=ELSEVIER
}

@article{huffman1952method,
  title={A method for the construction of minimum-redundancy codes},
  author={Huffman, David A.},
  journal={Proceedings of the IRE},
  volume={40},
  number={9},
  pages={1098--1101},
  year={1952},
  publisher=IEEE
}

@book{flannery1992numerical,
  title={Numerical recipes in {C}},
  author={Flannery, Brian P. and Press, William H. and Teukolsky, Saul A. and Vetterling, William},
  publisher={Press Syndicate of the University of Cambridge, New York},
  year={1992}
}

@article{deutsch1996deflate,
  title={{DEFLATE} compressed data format specification version 1.3},
  author={Deutsch, L Peter},
  year={1996}
}

@book{pennebaker1992jpeg,
  title={{JPEG}: Still image data compression standard},
  author={Pennebaker, William B.},
  year={1992},
  publisher={Springer}
}

@misc{sherigar2004huffman,
  title={Huffman decoder used for decoding both advanced audio coding ({AAC}) and {MP3} audio},
  author={Sherigar, Bhaskar and Ramanujan, Valmiki K.},
  year={2004},
  month=jun # "~29",
  publisher={Google Patents},
  note={US Patent App. 10/880,695}
}

@article{witten1987arithmetic,
  title={Arithmetic coding for data compression},
  author={Witten, Ian H. and Neal, Radford M. and Cleary, John G.},
  journal=CACM,
  volume={30},
  number={6},
  pages={520--540},
  year={1987},
  publisher=ACM
}

@misc{langdon1990arithmetic,
  title={Arithmetic coding encoder and decoder system},
  author={Langdon Jr, Glen G. and Mitchell, Joan L. and Pennebaker, William B. and Rissanen, Jorma J.},
  year={1990},
  month=feb # "~27",
  publisher={Google Patents},
  note={US Patent 4,905,297}
}

@inproceedings{george2014hardware,
  title={Hardware system synthesis from domain-specific languages},
  author={George, Nivia and Lee, HyoukJoong and Novo, David and Rompf, Tiark and Brown, Kevin J. and Sujeeth, Arvind K. and Odersky, Martin and Olukotun, Kunle and Ienne, Paolo},
  booktitle=FPL,
  pages={1--8},
  year={2014},
  organization=IEEE
}

@article{matai2014enabling,
  title={Enabling {FPGA}s for the Masses},
  author={Matai, Janarbek and Richmond, Dustin and Lee, Dajung and Kastner, Ryan},
  journal={arXiv preprint arXiv:1408.5870},
  year={2014}
}

@article{ortiz2011streaming,
  title={A Streaming High-Throughput Linear Sorter System with Contention Buffering},
  author={Ortiz, Jorge and others},
  journal={International Journal of Reconfigurable Computing},
  year={2011},
  publisher={Hindawi Publishing Corporation}
}

@inproceedings{bednara2000tradeoff,
  title={Tradeoff analysis and architecture design of a hybrid hardware/software sorter},
  author={Bednara, Marcus and others},
  booktitle=ASAP,
  pages={299--308},
  year={2000},
  organization=IEEE
}

@incollection{marcelino2008sorting,
  title={Sorting units for {FPGA}-based embedded systems},
  author={Marcelino, Rui and others},
  booktitle={Distributed Embedded Systems: Design, Middleware and Resources},
  pages={11--22},
  year={2008},
  publisher={Springer}
}

@inproceedings{arcas2014empirical,
  title={An empirical evaluation of High-Level Synthesis languages and tools for database acceleration},
  author={Arcas-Abella, Oriol and others},
  booktitle=FPL,
  pages={1--8},
  year={2014},
  organization=IEEE
}

@article{mueller2012sorting,
  title={Sorting networks on {FPGA}s},
  author={Mueller, Rene and others},
  journal={The VLDB Journal—The International Journal on Very Large Data Bases},
  volume={21},
  number={1},
  pages={1--23},
  year={2012},
  publisher=SPRINGER
}

@inproceedings{matai2016sorting,
 author = {Matai, Janarbek and Richmond, Dustin and Lee, Dajung and Blair, Zac and Wu, Qiongzhi and Abazari, Amin and Kastner, Ryan},
 title = {{Resolve}: Generation of High-Performance Sorting Architectures from High-Level Synthesis},
 booktitle = FPGA,
 year = {2016},
 isbn = {978-1-4503-3856-1},
 pages = {195--204},
 numpages = {10},
 url = {http://doi.acm.org/10.1145/2847263.2847268},
 doi = {10.1145/2847263.2847268},
 publisher = ACM,
} 

@book{knuth1998art,
  title={The art of computer programming: sorting and searching},
  author={Knuth, Donald Ervin},
  volume={3},
  year={1998},
  publisher={Pearson Education}
}

@book{micheli1994synthesis,
  title={Synthesis and optimization of digital circuits},
  author={Micheli, Giovanni De},
  year={1994},
  publisher={McGraw-Hill Higher Education}
}

@book{coussy2010high,
  title={High-level synthesis},
  author={Coussy, Philippe and Morawiec, Adam},
  volume={1},
  year={2010},
  publisher={Springer}
}

@book{gajski2012high,
  title={High-Level Synthesis: Introduction to Chip and System Design},
  author={Gajski, Daniel D. and Dutt, Nikil D. and Wu, Allen C.H. and Lin, Steve Y.L.},
  year={2012},
  publisher={Springer Science \& Business Media}
}

@article{ahmed1982highly,
  title={Highly concurrent computing structures for matrix arithmetic and signal processing},
  author={Ahmed, Hassan M. and Delosme, Jean-Marc and Morf, Martin},
  journal=COMPUTER,
  volume={15},
  number={1},
  pages={65--82},
  year={1982},
  publisher=IEEE
}

@inproceedings{andraka1996building,
  title={Building a high performance bit-serial processor in an {FPGA}},
  author={Andraka, Raymond J.},
  booktitle={Proceedings of Design SuperCon},
  volume={96},
  pages={1--5},
  year={1996}
}

@article{duprat1993cordic,
  title={The {CORDIC} algorithm: new results for fast {VLSI} implementation},
  author={Duprat, Jean and Muller, Jean-Michel},
  journal=IEEETC,
  volume={42},
  number={2},
  pages={168--178},
  year={1993},
  publisher=IEEE
}

@book{lee2011signalsandsystems,
  title={Structure and Interpretation of Signals and Systems, Second Edition},
  author={Edward A. Lee and Pravin Varaiya},
  year={2011},
  ISBN = {0578077191},
  issn={978-0-578-07719-2},
  URL ={LeeVaraiya.org},
}

@article{despain1974fourier,
  title={Fourier transform computers using {CORDIC} iterations},
  author={Despain, Alvin M.},
  journal= IEEETC,
  volume={100},
  number={10},
  pages={993--1001},
  year={1974},
  publisher=IEEE
}

@inproceedings{canis2011legup,
  title={{LegUp}: high-level synthesis for {FPGA}-based processor/accelerator systems},
  author={Canis, Andrew and Choi, Jongsok and Aldham, Mark and Zhang, Victor and Kammoona, Ahmed and Anderson, Jason H and Brown, Stephen and Czajkowski, Tomasz},
  booktitle=FPGA,
  pages={33--36},
  year={2011},
  organization=ACM
}

@book{mead1980introduction,
  title={Introduction to {VLSI} systems},
  author={Mead, Carver and Conway, Lynn},
  volume={1080},
  year={1980},
  publisher={Addison-Wesley Reading, MA}
}

@inproceedings{betz1997vpr,
  title={{VPR}: A new packing, placement and routing tool for {FPGA} research},
  author={Betz, Vaughn and Rose, Jonathan},
  booktitle=FPL,
  pages={213--222},
  year={1997},
  organization={Springer}
}

@article{brown1996fpga,
  title={{FPGA} and {CPLD} architectures: A tutorial},
  author={Brown, Stephen and Rose, Jonathan},
  journal=IEEEDTC,
  volume={13},
  number={2},
  pages={42--57},
  year={1996},
  publisher=IEEE
}

@book{hauck2010reconfigurable,
  title={Reconfigurable computing: the theory and practice of {FPGA}-based computation},
  author={Hauck, Scott and DeHon, Andre},
  volume={1},
  year={2010},
  publisher=MK
}

@TechReport{sevendwarfs,
  author =	 {Krste Asanović and Ras Bodik and Bryan Christopher Catanzaro and Joseph James Gebis and Parry Husbands and Kurt Keutzer and David A. Patterson and William Lester Plishker and John Shalf and Samuel Webb Williams and Katherine A. Yelick},
  title =	 {The Landscape of Parallel Computing Research: A View from Berkeley},
  institution =	 EECS,
  year =	 2006,
  type =	 TR,
  number =	 {UCB/EECS-2006-183},
  address =	 UCB,
  month =	 dec,
  URL={http://www2.eecs.berkeley.edu/Pubs/TechRpts/2006/EECS-2006-183.pdf}
}

@manual{ARMAXI4,
  title={{AMBA} {AXI} and {ACE} Protocol Specification},
  organization={ARM Limited},
  note= {ARM IHI 0022E},
  year=2013,
  edition={v1.0},
  URL={http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ihi0022e/index.html}
 }
 
 @article{hegarty2016rigel,
 author = {Hegarty, James and Daly, Ross and DeVito, Zachary and Ragan-Kelley, Jonathan and Horowitz, Mark and Hanrahan, Pat},
 title = {Rigel: Flexible Multi-rate Image Processing Hardware},
 journal = {ACM Trans. Graph.},
 issue_date = {July 2016},
 volume = {35},
 number = {4},
 month = jul,
 year = {2016},
 issn = {0730-0301},
 pages = {85:1--85:11},
 articleno = {85},
 numpages = {11},
 url = {http://doi.acm.org/10.1145/2897824.2925892},
 doi = {10.1145/2897824.2925892},
 acmid = {2925892},
 publisher = ACM,
 address = {New York, NY, USA},
 keywords = {FPGAs, domain-specific languages, hardware synthesis, image processing, video processing},
}

 @book{lee2017plato,
  title={Plato and the Nerd: The Creative Partnership of Humans and Technology},
  author={Lee, Edward Ashford},
  year={2017},
  publisher=MIT,
  isbn={978-0262036481}
} 
@book{knapp96bc,
  title={Behavioral Synthesis: Digital System Design using the {Synopsys} Behavioral Compiler},
  author={Knapp, David},
  year={1996},
  publisher=PH,
  isbn={0-13-569252-0}
} 

@INPROCEEDINGS{detrey07hotbm, 
author={J. Detrey and F. de Dinechin}, 
booktitle=FPL,
title={Floating-Point Trigonometric Functions for {FPGA}s}, 
year={2007}, 
pages={29-34}, 
doi={10.1109/FPL.2007.4380621}, 
ISSN={1946-147X}, 
month=aug,
}

@INPROCEEDINGS{winterstein13dynamic, 
author={F. Winterstein and S. Bayliss and G. A. Constantinides}, 
booktitle=FPGA, 
title={High-level synthesis of dynamic data structures: A case study using {Vivado HLS}}, 
year={2013}, 
pages={362-365}, 
doi={10.1109/FPT.2013.6718388}, 
month=dec,
}
@INPROCEEDINGS{tan15elasticflow, 
author={M. Tan and G. Liu and R. Zhao and S. Dai and Z. Zhang}, 
booktitle=ICCAD, 
title={ElasticFlow: A complexity-effective approach for pipelining irregular loop nests}, 
year={2015}, 
pages={78-85}, 
doi={10.1109/ICCAD.2015.7372553}, 
month=nov,
}
@ARTICLE{liu17elasticflow, 
author={G. Liu and M. Tan and S. Dai and R. Zhao and Z. Zhang}, 
journal=IEEETCAD, 
title={Architecture and Synthesis for Area-Efficient Pipelining of Irregular Loop Nests}, 
year={2017}, 
volume={36}, 
number={11}, 
pages={1817-1830}, 
doi={10.1109/TCAD.2017.2664067}, 
ISSN={0278-0070}, 
month=nov,
}
@inproceedings{dai17dynamic,
 author = {Dai, Steve and Zhao, Ritchie and Liu, Gai and Srinath, Shreesha and Gupta, Udit and Batten, Christopher and Zhang, Zhiru},
 title = {Dynamic Hazard Resolution for Pipelining Irregular Loops in High-Level Synthesis},
 booktitle = FPGA,
 year = {2017},
 isbn = {978-1-4503-4354-1},
 pages = {189--194},
 url = {http://doi.acm.org/10.1145/3020078.3021754},
 doi = {10.1145/3020078.3021754},
} 

@article{dean08mapreduce,
 author = {Dean, Jeffrey and Ghemawat, Sanjay},
 title = {{MapReduce}: Simplified Data Processing on Large Clusters},
 journal = CACM,
 volume = {51},
 number = {1},
 month = jan,
 year = {2008},
 issn = {0001-0782},
 pages = {107--113},
 url = {http://doi.acm.org/10.1145/1327452.1327492},
 doi = {10.1145/1327452.1327492},
} 

@book{misra2012,
author = {MISRA},
title = {Guidelines for the Use of the C Language in Critical Systems},
isbn = {978-1-906400-10-1},
month = mar,
year=2013,
url = {https://www.misra.org.uk},
}
@book{sedgewickalgorithmsinC,
author = {Robert Sedgewick},
title = {Algorithms in {C}},
isbn = {978-0201756081},
year = 2001,
publisher=AW,
}

@inproceedings{Abdelhadi2014multiport,
 author = {Abdelhadi, Ameer M.S. and Lemieux, Guy G.F.},
 title = {Modular Multi-ported {SRAM}-based Memories},
 booktitle = FPGA,
 year = {2014},
 isbn = {978-1-4503-2671-1},
 pages = {35--44},
 numpages = {10},
 url = {http://doi.acm.org/10.1145/2554688.2554773},
 doi = {10.1145/2554688.2554773},
 publisher = ACM,
 }
 
 @article{Laforest2014multiport,
 author = {Laforest, Charles Eric and Li, Zimo and O'rourke, Tristan and Liu, Ming G. and Steffan, J. Gregory},
 title = {Composing Multi-Ported Memories on {FPGA}s},
 journal = ACMTRETS,
 volume = {7},
 number = {3},
 month = sep,
 year = {2014},
 issn = {1936-7406},
 pages = {16:1--16:23},
 articleno = {16},
 numpages = {23},
 url = {http://doi.acm.org/10.1145/2629629},
 doi = {10.1145/2629629},
 publisher = ACM,
} 

@book{gupta2004spark,
author={Gupta, Sumit and Gupta, Rajesh and Dutt, Nikil and Nicolau, Alexandru},
title={{SPARK}: A Parallelizing Approach to the High-level Synthesis of Digital Circuits},
year = 2004,
isbn = {1-4020-7837-4},
publisher=KLUWER,
}

@book{kastner2010arithmetic,
  title={Arithmetic optimization techniques for hardware and software design},
  author={Kastner, Ryan and Hosangadi, Anup and Fallah, Farzan},
  year={2010},
  publisher={Cambridge University Press}
}

@inproceedings{mirzaei2007fpga,
  title={{FPGA} implementation of high speed FIR filters using add and shift method},
  author={Mirzaei, Shahnam and Hosangadi, Anup and Kastner, Ryan},
  booktitle={Computer Design, 2006. ICCD 2006. International Conference on},
  pages={308--313},
  year={2007},
  organization={IEEE}
}